home *** CD-ROM | disk | FTP | other *** search
/ Aminet 16 / Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso / Aminet / misc / emu / QDOS2.lha / QLsource / ROMsrc / SYS / BASIC5_asm < prev    next >
Text File  |  1995-08-27  |  88KB  |  3,808 lines

  1. ;/*beginfile BASIC5_asm
  2. ; --------------------------------------------------------------
  3. ; BASIC5_asm - BASIC bits
  4. ;        - last modified 27/08/95
  5. ; QDOS-Amiga sources by Rainer Kowallik
  6. ;    ...some changes by Mark J Swift
  7. ; --------------------------------------------------------------
  8. ; create coded program / code line #
  9. L08474:
  10.     JSR    L04E4C(PC)    ;*/undomodify BSR L04E4C
  11.     MOVEA.L    BV_RIP(A6),A1    ;arith stack
  12.     JSR    CN_DTOI(PC)    ;*/undomodify BSR CN_DTOI
  13.     BNE.S    L084A4
  14.     TST.W    0(A6,A1.L)
  15.     BLE.S    L084A4
  16.     TST.B    BV_UNRVL(A6)    ;Need to unravel
  17.                 ;($ff) or not (0)
  18.     BEQ.S    L08496
  19. L0848E    ADDA.W    #$C,A7
  20.     MOVEQ    #1,D0
  21.     RTS
  22. L08496    MOVEQ    #4,D1
  23.     MOVEQ    #-$73,D4
  24.     MOVE.W    0(A6,A1.L),D5
  25.     JSR    L08E0A(PC)    ;*/undomodify BSR L08E0A
  26.     ADDQ.L    #2,(A7)
  27. L084A4    RTS
  28. L084A6:
  29.     DC.L    $04050709,$0C012D01,$2B027E7E,$134E4F54
  30. L084B6:
  31.     LEA    L084A6(PC),A2
  32.     JSR    L08748(PC)    ;*/undomodify BSR L08748
  33.     BRA.S    L084C8
  34.     MOVEQ    #-$7A,D4
  35.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  36.     ADDQ.L    #2,(A7)
  37. L084C8    RTS
  38. L084CA:
  39.     MOVEQ    #1,D3
  40.     BRA.S    L084D0
  41. L084CE:
  42.     MOVEQ    #0,D3
  43. L084D0    MOVEA.L    A0,A3
  44.     JSR    L08706(PC)    ;*/undomodify BSR L08706
  45.     BRA.S    L084F8
  46.     MOVE.L    A0,D5
  47.     SUB.L    A3,D5
  48.     CMPI.W    #$00FF,D5
  49.     BGT.S    L084F8
  50.     MOVE.L    A0,-(A7)
  51.     JSR    L08622(PC)    ;*/undomodify BSR L08622
  52.                 ;check name in buffer and
  53.                 ;get address of name list
  54.     BRA.S    L084F6        ;error
  55.     MOVEA.L    (A7)+,A0
  56.     MOVEQ    #-$78,D4
  57.     JSR    L08E0A(PC)    ;*/undomodify BSR L08E0A
  58.     ADDQ.L    #2,(A7)
  59.     RTS
  60. L084F6    MOVEA.L    (A7)+,A0
  61. L084F8    RTS
  62. L084FA:
  63.     DC.W    $1617,$191B,$1D1F,$2224,$2729,$2C2F,$3134,$373A
  64.     DC.W    $3C3E,$4145,$494D
  65.     DC.B    $51
  66.     DC.B    $01,'+'
  67.     DC.B    $01,'-'
  68.     DC.B    $01,'*'
  69.     DC.B    $01,'/'
  70.     DC.B    $02,'>='
  71.     DC.B    $01,'>'
  72.     DC.B    $02,'=='
  73.     DC.B    $01,'='
  74.     DC.B    $02,'<>'
  75.     DC.B    $02,'<='
  76.     DC.B    $01,'<'
  77.     DC.B    $02,'||'
  78.     DC.B    $02,'&&'
  79.     DC.B    $02,'^^'
  80.     DC.B    $01,'^'
  81.     DC.B    $01,'&'
  82.     DC.B    $12,'OR'
  83.     DC.B    $13,'AND'
  84.     DC.B    $13,'XOR'
  85.     DC.B    $13,'MOD'
  86.     DC.B    $13,'DIV'
  87.     DC.B    $15,'INSTR'
  88.     DC.B    $00
  89. L08552:
  90.     LEA    L084FA(PC),A2
  91.     JSR    L08748(PC)    ;*/undomodify BSR L08748
  92.     BRA.S    L08564
  93.     MOVEQ    #-$7B,D4
  94.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  95.     ADDQ.L    #2,(A7)
  96. L08564    RTS
  97. L08566    ; table of 5 separators
  98.     DC.B    $05,$06,$08,$0A
  99.     DC.W    $0C0E
  100.     DC.B    $01,',',$01,';',$01,'\'
  101.     DC.B    $01,'!',$12,'TO'
  102.     DC.B    $00
  103. L08578:
  104.     LEA    L08566(PC),A2
  105.     JSR    L08748(PC)    ;*/undomodify BSR L08748
  106.     BRA.S    L0858A        ;error
  107.     MOVEQ    #-$72,D4
  108.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  109.     ADDQ.L    #2,(A7)
  110. L0858A    RTS
  111. L0858C    MOVEQ    #0,D1
  112.     MOVEQ    #0,D5
  113. L08590    ADDQ.W    #1,D5
  114.     MOVE.B    0(A6,A0.L),D1
  115.     ADDQ.W    #1,A0
  116.     CMPI.B    #$20,D1
  117.     BEQ.S    L08590
  118.     SUBQ.W    #1,A0
  119.     SUBQ.W    #1,D5
  120.     BEQ.S    L085AA
  121.     MOVEQ    #-$80,D4
  122.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  123. L085AA    RTS
  124. L085AC:
  125.     MOVE.B    0(A6,A0.L),D2
  126.     CMPI.B    #$22,D2
  127.     BEQ.S    L085BC
  128.     CMPI.B    #$27,D2
  129.     BNE.S    L085DE
  130. L085BC    LEA    1(A0),A2
  131.     MOVEQ    #-1,D5
  132.     MOVEQ    #$0A,D3
  133. L085C4    ADDQ.W    #1,A0
  134.     ADDQ.W    #1,D5
  135.     MOVE.B    0(A6,A0.L),D1
  136.     CMP.B    D3,D1
  137.     BEQ.S    L085DE
  138.     CMP.B    D2,D1
  139.     BNE.S    L085C4
  140.     ADDQ.W    #1,A0
  141.     MOVEQ    #-$75,D4
  142.     JSR    L08E38(PC)    ;*/undomodify BSR L08E38
  143.     ADDQ.L    #2,(A7)
  144. L085DE    RTS
  145. L085E0:
  146.     JSR    L0872C(PC)    ;*/undomodify BSR L0872C
  147.     BNE.S    L085F2
  148.     MOVEA.L    BV_TKP(A6),A3    ;token list running pointer
  149.     CMPI.B    #$80,-$02(A6,A3.L)
  150.     BNE.S    L0860A
  151. L085F2    MOVEA.L    A0,A2
  152.     MOVE.L    BV_BFP(A6),D5    ;buffer running pointer
  153.     SUBQ.L    #1,D5
  154.     MOVEA.L    D5,A0
  155.     SUB.L    A2,D5
  156.     BEQ.S    L08608
  157.     MOVEQ    #-$74,D4
  158.     MOVEQ    #0,D2
  159.     JSR    L08E38(PC)    ;*/undomodify BSR L08E38
  160. L08608    ADDQ.L    #2,(A7)
  161. L0860A    RTS
  162. L0860C:
  163.     JSR    L04E4C(PC)    ;*/undomodify BSR L04E4C
  164.     MOVEA.L    BV_RIP(A6),A1    ;arith stack
  165.     JSR    CN_DTOF(PC)    ;*/undomodify BSR CN_DTOF
  166.     BNE.S    L08620
  167.     JSR    L08E12(PC)    ;*/undomodify BSR L08E12
  168.     ADDQ.L    #2,(A7)
  169. L08620    RTS
  170. ; --------------------------------------------------------------
  171. ; A3 contains pointer to Buffer with name , D5 contains length
  172. ; of name.
  173. ; A2 contains pointer to table to compare with this routine
  174. ; checks the name in buffer, and put it into the name list.
  175. ; return address of name table in A2
  176. ; --------------------------------------------------------------
  177. L08622:
  178.     MOVE.L    A2,-(A7)     ;save address of table to
  179.                 ;compare with
  180.     MOVE.B    D5,D2        ;length of name -> D2
  181.     MOVE.B    D2,D1        ;once more the length of
  182.                 ;the name
  183.     MOVEQ    #5,D3        ;bit to clear for capital
  184.                 ;letters
  185.     MOVEA.L    BV_NTBAS(A6),A2    ;base of name table
  186.     MOVEA.L    A3,A1        ;pointer to buffer with
  187.                 ;name -> A1
  188. L08630    CMPA.L    BV_NTP(A6),A2    ;top of name table
  189.     BGE.S    L08684        ;if end of name table
  190.     TST.L    0(A6,A2.L)    ;what is this
  191.     BEQ.S    L0864C        ;can not be the same name
  192.     MOVEA.L    BV_NLBAS(A6),A4    ;name list
  193.     ADDA.W    2(A6,A2.L),A4    ;add pointer to name in
  194.                 ;table
  195.     MOVE.B    0(A6,A4.L),D5    ;get length of name in
  196.                 ;table
  197.     CMP.B    D2,D5        ;compare it with the length
  198.                 ;of the name in buffer
  199.     BEQ.S    L08650        ;length is the same, so
  200.                 ;test the rest
  201. L0864C    ADDQ.W    #8,A2        ;try next name pointer
  202.     BRA.S    L08630
  203. L08650    ; compare name in buffer (A3/A1) with name in name
  204.     ; table (A2)
  205.     TST.B    D2        ;have we checked all bytes
  206.                 ;in the buffer ?
  207.     BEQ.S    L08672        ;end of name in buffer
  208.     MOVE.B    0(A6,A3.L),D4    ;next byte of name in
  209.                 ;buffer -> D4
  210.     ADDQ.W    #1,A3        ;increment pointer in
  211.                 ;buffer
  212.     BCLR    D3,D4        ;capital letters only
  213.     TST.B    D5        ;have we checked all bytes
  214.                 ;in the name list ?
  215.     BEQ.S    L0867C        ;end of name in list => not
  216.                 ;the same name
  217.     ADDQ.W    #1,A4        ;increment pointer in name
  218.                 ;list
  219.     MOVE.B    0(A6,A4.L),D6    ;next byte of name in list
  220.                 ;-> D6
  221.     BCLR    D3,D6        ;cabital letters only
  222.     CMP.B    D4,D6        ;are the bytes of buffer
  223.                 ;and name list equal
  224.     BNE.S    L0867C        ;not the same name
  225.     SUBQ.B    #1,D2        ;decrement number of bytes
  226.                 ;in buffer
  227.     SUBQ.B    #1,D5        ;decrement number of bytes
  228.                 ;in name list
  229.     BRA.S    L08650        ;continue comparision
  230. L08672:
  231.     TST.B    D5        ;is the the name in the
  232.                 ;name list complete ?
  233.     BNE.S    L0867C        ;no => the name are not
  234.                 ;identical
  235. FOUND_x:
  236.     MOVE.L    A2,D5        ;pointer to name table
  237.                 ;entry -> D5 !!!!
  238.     ADDQ.W    #4,A7        ;clean up stack
  239.     BRA.S    L086FA        ;return with success
  240. L0867C:
  241.     MOVEA.L    A1,A3        ;restore pointer to name in
  242.                 ;buffer
  243.     MOVE.B    D1,D2        ;restore length of name in
  244.                 ;buffer
  245.     ADDQ.W    #8,A2        ;try next name table entry
  246.     BRA.S    L08630        ;continue searching
  247. ; name not found in name list , so try list supplyed in (A7)
  248. L08684:
  249.     MOVEQ    #0,D6
  250.     MOVEA.L    A3,A0        ;pointer to name in buffer
  251.     MOVEA.L    (A7)+,A2     ;pointer to second list
  252.     JSR    L08966(PC)    ;*/undomodify BSR L08966
  253.                 ;try to find name there
  254.     BRA.S    L08692        ;name not found
  255.     BRA.S    L08704        ;name found
  256. L08692:
  257.     TST.B    BV_UNRVL(A6)    ;Need to unravel
  258.                 ;($ff) or not (0)
  259.     BEQ.S    L0869E
  260.     ADDQ.W    #8,A7
  261.     JMP    L0848E(PC)    ;*/undomodify BRA L0848E
  262. L0869E    ; write new name into name list, start entry into name
  263.     ; table
  264.     MOVEQ    #0,D4
  265.     MOVE.B    D2,D4
  266.     JSR    L04DE8(PC)    ;*/undomodify BSR L04DE8
  267.                 ;reserve memory for name
  268.                 ;table entry
  269.     MOVE.L    D4,D2
  270.     MOVE.L    #-1,4(A6,A2.L)    ;initialize address of
  271.                 ;routine
  272.     MOVEA.L    BV_NLP(A6),A4    ;name list running pointer
  273.     MOVE.L    A4,D3
  274.     SUB.L    BV_NLBAS(A6),D3    ;name list
  275.     MOVE.W    D3,2(A6,A2.L)    ;store pointer to name list
  276.     ADD.L    A3,D2
  277.     MOVE.B    -1(A6,D2.L),D3
  278.     MOVEQ    #0,D1
  279.     SUBI.B    #'%',D3        ;integer ?
  280.     BLT.S    L086D2        ;$ string
  281.     BGT.S    L086D0        ;nothing -> floatimg point
  282.     ADDQ.W    #1,D1        ;% integer
  283. L086D0    ADDQ.W    #1,D1
  284. L086D2    ADDQ.W    #1,D1
  285.     MOVE.W    D1,0(A6,A2.L)    ;store type
  286.     MOVE.L    A2,D5        ;Store name table pointer
  287.     MOVEQ    #1,D1
  288.     ADD.W    D4,D1
  289.     JSR    L04E72(PC)    ;*/undomodify BSR L04E72
  290.     MOVE.B    D4,0(A6,A4.L)    ;length of name
  291. L086E6    ADDQ.W    #1,A4        ;copy name to name list
  292.     MOVE.B    0(A6,A3.L),0(A6,A4.L)
  293.     ADDQ.W    #1,A3
  294.     SUBQ.B    #1,D4
  295.     BNE.S    L086E6        ;continue copy
  296.     ADDQ.W    #1,A4
  297.     MOVE.L    A4,BV_NLP(A6)    ;name list running pointer
  298. L086FA    MOVEA.L    D5,A2        ;store pointer to name
  299.                 ;table entry
  300.     SUB.L    BV_NTBAS(A6),D5    ;name table
  301.     LSR.L    #3,D5        ;calculate number of entry
  302.                 ;-> D5
  303.     ADDQ.L    #2,(A7)        ;return with success
  304. L08704    RTS
  305. ; ------------------------------------------------
  306. L08706    BSR.S    L0872C
  307.     BNE.S    L0872A
  308.     CMPI.B    #1,D2
  309.     BNE.S    L0872A
  310. L08710    ADDQ.W    #1,A0
  311.     BSR.S    L0872C
  312.     BEQ.S    L08710
  313.     CMPI.B    #$24,D2
  314.     BEQ.S    L08722
  315.     CMPI.B    #$25,D2
  316.     BNE.S    L08728
  317. L08722    TST.B    D3
  318.     BNE.S    L0872A
  319.     ADDQ.W    #1,A0
  320. L08728    ADDQ.L    #2,(A7)
  321. L0872A    RTS
  322. L0872C    MOVEQ    #0,D1
  323.     MOVE.B    0(A6,A0.L),D1
  324.     BLT.S    L08746
  325.     LEA    L03C28(PC),A1    ;table defines type of
  326.                 ;ASCII code
  327.     MOVE.B    0(A1,D1.W),D2
  328.     CMPI.B    #1,D2
  329.     BEQ.S    L08746
  330.     CMPI.B    #2,D2
  331. L08746    RTS
  332. L08748    MOVE.L    A0,-(A7)
  333.     MOVEQ    #0,D5
  334. L0874C    MOVEA.L    (A7),A0
  335.     BSR.S    L08794
  336. L08750    ADDQ.W    #1,D5
  337.     MOVEA.L    A2,A1
  338.     CMP.B    (A1),D5
  339.     BGT.S    L08790
  340.     MOVEQ    #0,D1
  341.     MOVE.B    0(A1,D5.W),D1
  342.     ADDA.W    D1,A1
  343.     MOVE.B    (A1)+,D1
  344.     CMP.B    (A1)+,D0
  345.     BNE.S    L08750
  346.     MOVE.B    D1,D0
  347.     SWAP    D1
  348.     MOVE.B    D0,D1
  349.     ANDI.B    #$0F,D1
  350. L08770    SUBQ.B    #1,D1
  351.     BLE.S    L0877E
  352.     ADDQ.W    #1,A0
  353.     BSR.S    L08794
  354.     CMP.B    (A1)+,D0
  355.     BEQ.S    L08770
  356.     BRA.S    L0874C
  357. L0877E:
  358.     SWAP    D1
  359.     LSR.B    #4,D1
  360.     ADDQ.W    #1,A0
  361.     BEQ.S    L0878C
  362.     JSR    L0872C(PC)    ;*/undomodify BSR.S L0872C
  363.                 ;*/undomodify nop
  364.     BEQ.S    L0874C
  365. L0878C:
  366.     ADDQ.L    #2,4(A7)
  367. L08790:
  368.     ADDQ.W    #4,A7
  369.     RTS
  370. L08794    MOVEQ    #0,D0
  371.     MOVE.B    0(A6,A0.L),D0
  372.     BLT.S    L087AC
  373.     LEA    L03C28(PC),A3    ;table defines type of
  374.                 ;ASCII code
  375.     CMPI.B    #1,0(A3,D0.W)
  376.     BNE.S    L087AC
  377.     BCLR    #5,D0
  378. L087AC    RTS
  379. L087AE:
  380.     DC.W    L084CE-L087C4
  381.     DC.W    L0860C-L087C4
  382.     DC.W    L0860C-L087C4
  383.     DC.W    L04FFC-L087C4    ;*/undomend DC.W L087AC-...
  384.     DC.W    L08552-L087C4
  385.     DC.W    L084B6-L087C4
  386.     DC.W    L08578-L087C4
  387.     DC.W    L085AC-L087C4
  388.     DC.W    L085E0-L087C4
  389.     DC.W    L08474-L087C4
  390.     DC.W    L084CA-L087C4
  391. L087C4    LSR.B    #1,D6
  392. L087C6    JSR    L0858C(PC)    ;*/undomodify BSR L0858C
  393.     ADD.B    D6,D6
  394.     MOVE.W    L087AE-2(PC,D6.W),D6
  395.     JMP    L087C4(PC,D6.W)
  396. ; Basic syntax analyser
  397. ANA_SYNX:
  398.     MOVEQ    #0,D7
  399.     MOVEQ    #0,D6
  400.     MOVE.L    (A2)+,-(A7)    ;push instruction table
  401.                 ;(END,FOR,DEFine,...)
  402.     MOVE.L    (A2),-(A7)    ;push command syntax table
  403.     MOVEA.L    (A7),A5        ;Command syntax table -> A5
  404.     MOVE.W    (A5),D6        ;get first word (offset)
  405.     ADDA.W    D6,A5        ;add offset to address
  406.     MOVEQ    #0,D4
  407.     JSR    PUSHD4TG(PC)    ;*/undomodify BSR PUSHD4TG
  408.                 ;push D4 (=0) on temporary
  409.                 ;stack
  410.     MOVEA.L    (A6),A0        ;get text line buffer base
  411.     BRA.S    L0880E
  412. L087EC    SUBI.B    #$80,D6
  413.     LSR.B    #1,D6
  414.     BNE.S    L087FE
  415.     SUBQ.W    #1,A5
  416.     JSR    L08A7A(PC)    ;*/undomodify BSR L08A7A
  417.     BRA    L088CE
  418. L087FE    MOVE.L    A5,D4
  419.     JSR    PUSHD4TG(PC)    ;*/undomodify BSR PUSHD4TG
  420.     ADD.B    D6,D6
  421.     MOVEA.L    (A7),A5
  422.     MOVE.W    -2(A5,D6.W),D6
  423.     ADDA.W    D6,A5
  424. L0880E    JSR    L08A7E(PC)    ;*/undomodify BSR L08A7E
  425.                 ;push #0 and A0(=text line)
  426.                 ;on backtrack stack
  427. L08812    MOVEQ    #0,D6
  428.     MOVE.B    (A5)+,D6     ;next byte commando syntax
  429.     BEQ.S    L0887A
  430.     BMI.S    L087EC
  431.     BCLR    #6,D6
  432.     BEQ.S    L0882C
  433.     MOVEA.L    4(A7),A2     ;get instruction syntax
  434.                 ;table (END,FOR,DEFine,...)
  435.     JSR    L08966(PC)    ;*/undomodify BSR L08966
  436.     BRA.S    L08846        ;error
  437.     BRA.S    L08864
  438. L0882C    BCLR    #5,D6
  439.     BEQ.S    L0883A
  440.     JSR    L08B34(PC)    ;*/undomodify BSR L08B34
  441.     BRA.S    L08846        ;error
  442.     BRA.S    L08864
  443. L0883A:
  444.     MOVEA.L    4(A7),A2     ;get instruction syntax
  445.                 ;table
  446.     JSR    L087C4(PC)    ;*/undomodify BSR.S L087C4
  447.                 ;*/undomodify nop
  448.     BRA.S    L08846        ;error
  449.     BRA.S    L08864
  450. L08846:
  451.     MOVEA.L    BV_BTP(A6),A2    ;backtrack stack
  452.                 ;during parsing
  453. L0884A    MOVEA.L    0(A6,A2.L),A3
  454.     MOVEA.L    4(A6,A2.L),A0
  455.     MOVE.L    8(A6,A2.L),D3
  456.     ADDA.W    #$0C,A2
  457.     BLT.S    L0884A
  458.     ADDQ.W    #1,A5
  459.     MOVE.L    A3,BV_TKP(A6)    ;token list running pointer
  460.     BRA.S    L08812        ;go on analysing with next
  461.                 ;item
  462. L08864    JSR    L08A7A(PC)    ;*/undomodify BSR L08A7A
  463. L08868    MOVEQ    #0,D6
  464.     MOVE.B    (A5),D6
  465.     BEQ.S    L088CE
  466.     BMI.S    L08874
  467.     ADDA.W    D6,A5
  468.     BRA.S    L08812
  469. L08874    NEG.B    D6
  470.     SUBA.W    D6,A5
  471.     BRA.S    L08812
  472. L0887A    MOVEA.L    BV_BTP(A6),A4    ;backtrack stack
  473.                 ;during parsing
  474.     CMPA.L    BV_BTBAS(A6),A4    ;backtrack running pointer
  475.     BGT.S    L088B2
  476.     MOVEA.L    0(A6,A4.L),A3
  477.     MOVEA.L    4(A6,A4.L),A0
  478.     MOVEA.L    8(A6,A4.L),A5
  479.     ADDA.W    #$0C,A4
  480.     MOVE.L    A4,BV_BTP(A6)    ;backtrack stack
  481.                 ;during parsing
  482.     MOVE.L    A5,D3
  483.     BGT.S    L088A6
  484.     BEQ.S    L088B8
  485.     MOVE.L    A0,D4
  486.     JSR    PUSHD4TG(PC)    ;*/undomodify BSR PUSHD4TG
  487.     BRA.S    L0887A
  488. L088A6    BTST    D7,-1(A5)
  489.     BEQ.S    L08846
  490.     MOVE.L    -$10(A6,A4.L),D3
  491.     BMI.S    L08846
  492. L088B2    ADDQ.W    #8,A7
  493.     MOVEQ    #-1,D0        ;Not complete error
  494.     RTS
  495. L088B8    MOVEA.L    BV_TGP(A6),A4    ;temporary graph stack
  496.                 ;during parsing
  497.     MOVEA.L    0(A6,A4.L),A5
  498.     ADDQ.W    #4,A4
  499.     MOVE.L    A4,BV_TGP(A6)    ;temporary graph stack
  500.                 ;during parsing
  501.     MOVE.L    A5,D3
  502.     BEQ.S    L088B2
  503.     BRA    L08846
  504. L088CE    JSR    L04E52(PC)    ;*/undomodify BSR L04E52
  505.                 ;reserve 12 byte on
  506.                 ;arith stack
  507.     MOVEA.L    BV_BTP(A6),A4    ;backtrack stack
  508.                 ;during parsing
  509.     MOVEA.L    BV_TGP(A6),A2    ;temporary graph stack
  510.                 ;during parsing
  511.     SUBQ.W    #8,A4
  512.     MOVE.L    #-1,4(A6,A4.L)
  513.     MOVE.L    0(A6,A2.L),0(A6,A4.L)
  514.     MOVEA.L    0(A6,A4.L),A5
  515.     SUBQ.W    #4,A4
  516.     MOVE.L    BV_TKP(A6),0(A6,A4.L) ;token list running ptr
  517.     ADDQ.W    #4,A2
  518.     MOVE.L    A2,BV_TGP(A6)    ;temporary graph stack
  519.                 ;during parsing
  520.     MOVE.L    A4,BV_BTP(A6)    ;backtrack stack
  521.                 ;during parsing
  522.     MOVE.L    A5,D3
  523.     BNE    L08868
  524.     ADDQ.W    #8,A7
  525.     MOVEQ    #0,D0
  526.     RTS
  527. INI_STCK ; Imitialize BASIC stacks
  528.     MOVE.L    BV_BTBAS(A6),BV_BTP(A6) ;backtrack running ptr
  529.     MOVE.L    BV_TGBAS(A6),BV_TGP(A6) ;graph stack running ptr
  530.     MOVE.L    BV_TKBAS(A6),BV_TKP(A6) ;token list
  531.     MOVEQ    #$7E,D1
  532.     JSR    L04E6E(PC)    ;*/undomodify BSR L04E6E
  533.     MOVEQ    #$20,D1
  534.     JSR    BV_CHRIX(PC)    ;*/undomodify BSR BV_CHRIX
  535.     MOVE.L    BV_RIP(A6),BV_TGBAS(A6) ;arith stack
  536.     SUBI.L    #$20,BV_TGBAS(A6) ;graph stack running ptr
  537.     MOVE.L    BV_TGBAS(A6),BV_TGP(A6) ;graph stack running ptr
  538.     MOVEQ    #$50,D1
  539.     JSR    L04E5A(PC)    ;*/undomodify BSR L04E5A
  540.     MOVE.L    BV_TGP(A6),BV_BTBAS(A6) ;temporary graph stack
  541.                 ;during parsing
  542.     SUBI.L    #$50,BV_BTBAS(A6) ;backtrack running pointer
  543.     MOVE.L    BV_BTBAS(A6),BV_BTP(A6) ;backtrack running ptr
  544.     MOVEQ    #0,D0
  545.     JSR    L04E32(PC)    ;*/undomodify BSR L04E32
  546.                 ;allocate memory
  547.     MOVE.W    #$0200,D1
  548.     JMP    L04E54(PC)    ;*/undomodify BRA L04E54
  549. L08966:
  550.     MOVEM.L    D0-D5/A1-A5,-(A7)
  551.     MOVEA.L    A2,A3
  552.     MOVEA.L    A0,A1
  553.     MOVEQ    #0,D3
  554.     MOVEQ    #0,D4
  555.     MOVEQ    #0,D5
  556.     MOVEQ    #0,D0
  557.     LSR.B    #1,D6
  558.     BEQ.S    L08980
  559.     JSR    L0858C(PC)    ;*/undomodify BSR L0858C
  560.     BRA.S    L08986
  561. L08980    ST    D0
  562.     SWAP    D0
  563.     MOVEQ    #1,D6
  564. L08986    MOVEQ    #0,D1
  565.     CMP.B    (A2),D6
  566.     BGT    L08A48
  567.     MOVE.B    0(A2,D6.W),D1
  568.     ADDA.L    D1,A2
  569.     MOVE.B    (A2)+,D1
  570.     ROR.L    #4,D1
  571.     MOVE.B    D1,D4
  572.     SWAP    D1
  573.     ROL.W    #4,D1
  574.     MOVE.B    D1,D3
  575. L089A0    SUBQ.B    #1,D4
  576.     BLT.S    L089FC
  577.     MOVE.B    (A2)+,D2
  578.     CMPI.B    #$60,D2
  579.     BGT.S    L089B2
  580.     ST    D0
  581.     SF    D5
  582.     BRA.S    L089BC
  583. L089B2    SF    D0
  584.     TST.B    D5
  585.     BNE.S    L089A0
  586.     SUBI.B    #$20,D2
  587. L089BC    MOVE.B    0(A6,A0.L),D1
  588.     ADDQ.W    #1,A0
  589.     CMPI.B    #$60,D1
  590.     BLE.S    L089CC
  591.     SUBI.B    #$20,D1
  592. L089CC    CMP.B    D2,D1
  593.     BEQ.S    L089A0
  594.     TST.B    D0
  595.     BNE.S    L089DA
  596.     ST    D5
  597.     SUBQ.W    #1,A0
  598.     BRA.S    L089A0
  599. L089DA    SWAP    D0
  600.     TST.B    D0
  601.     BEQ.S    L08A48
  602.     SWAP    D5
  603.     TST.B    D5
  604.     SWAP    D5
  605.     BEQ.S    L089EC
  606.     TST.B    D3
  607.     BNE.S    L089F4
  608. L089EC    ADDQ.W    #1,D6
  609.     MOVEA.L    A1,A0
  610.     MOVEA.L    A3,A2
  611.     BRA.S    L08986
  612. L089F4    MOVEA.L    A4,A0
  613.     SUBQ.B    #1,D3
  614.     ADDA.L    D4,A2
  615.     BRA.S    L08A30
  616. L089FC    SWAP    D0
  617.     TST.B    D0
  618.     BEQ.S    L08A38
  619.     MOVE.B    0(A6,A0.L),D1
  620.     BLT.S    L08A48
  621.     LEA    L03C28(PC),A5    ;table defines type of
  622.                 ;ASCII code
  623.     CMPI.B    #$01,0(A5,D1.W)
  624.     BEQ.S    L08A1E
  625.     CMPI.B    #$02,0(A5,D1.W)
  626.     BEQ.S    L08A48
  627.     BRA.S    L08A40
  628. L08A1E    SWAP    D5
  629.     TST.B    D5
  630.     BNE.S    L08A48
  631.     TST.B    D3
  632.     BEQ.S    L08A48
  633.     ST    D5
  634.     SWAP    D5
  635.     SUBQ.B    #1,D3
  636.     MOVEA.L    A0,A4
  637. L08A30    MOVE.B    (A2)+,D4
  638.     LSR.B    #4,D4
  639.     BRA    L089A0
  640. L08A38    MOVEQ    #-$7F,D4
  641.     MOVE.B    D6,D5
  642.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  643. L08A40    MOVEM.L    (A7)+,D0-D5/A1-A5
  644.     ADDQ.L    #2,(A7)
  645.     RTS
  646. L08A48    MOVEM.L    (A7)+,D0-D5/A1-A5
  647.     RTS
  648. COMP_ERR ; error when compiling
  649.     MOVE.L    BV_TKBAS(A6),BV_TKP(A6) ;token list
  650.     MOVEA.L    (A6),A0
  651.     JSR    L08474(PC)    ;*/undomodify BSR L08474
  652.     BRA.S    L08A76        ;error
  653.     MOVEQ    #-$7F,D4     ;error
  654.     MOVEQ    #$1F,D5
  655.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  656.     JSR    L085F2(PC)    ;*/undomodify BSR L085F2
  657.                 ;success
  658.     BRA.S    L08A76
  659.     MOVEQ    #-$7C,D4
  660.     MOVEQ    #$0A,D5
  661.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  662.     MOVEQ    #0,D0
  663.     RTS
  664. L08A76    MOVEQ    #-21,D0        ;Bad line error
  665.     RTS
  666. L08A7A    MOVE.L    A5,D4
  667.     BRA.S    L08A80
  668. L08A7E    MOVEQ    #0,D4
  669. L08A80    JSR    L04E52(PC)    ;*/undomodify BSR L04E52
  670.                 ;reserve 12 byte on
  671.                 ;arith stack
  672.     MOVEA.L    BV_BTP(A6),A4    ;backtrack stack
  673.                 ;during parsing
  674.     SUBA.W    #$0C,A4
  675.     MOVE.L    D4,8(A6,A4.L)    ;push D4 on Backtrack stack
  676.     MOVE.L    A0,4(A6,A4.L)    ;push A0 on Backtrack stack
  677.     MOVE.L    BV_TKP(A6),0(A6,A4.L) ;token list running ptr
  678.     MOVE.L    A4,BV_BTP(A6)    ;backtrack stack
  679.                 ;during parsing
  680.     RTS
  681. PUSHD4TG:
  682.     JSR    L04E58(PC)    ;*/undomodify BSR L04E58
  683.                 ;reserve 4 bytes on
  684.                 ;arith stack
  685.     MOVEA.L    BV_TGP(A6),A4    ;temporary graph stack
  686.                 ;during parsing
  687.     SUBQ.W    #4,A4
  688.     MOVE.L    D4,0(A6,A4.L)    ;put D4 on stack
  689.     MOVE.L    A4,BV_TGP(A6)    ;temporary graph stack
  690.                 ;during parsing
  691.     RTS
  692. ; --------------------------------------------------------------
  693. ; Format precompiled BASIC line. The line has to be tokenized
  694. ; and starts from 8(A6) and ends at $C(A6)
  695. ; --------------------------------------------------------------
  696. FMT_LINE:
  697.     MOVEA.L    8(A6),A0     ;token list
  698. L08AB8    CMPA.L    BV_TKP(A6),A0    ;token list running pointer
  699.     BGE.S    L08ADA        ;end of list ?
  700.     CMPI.B    #$81,0(A6,A0.L)    ;Search for non keyword
  701.                 ;token in token list
  702.     BNE.S    L08ACC
  703.     ADDQ.W    #2,A0
  704.     BSR.S    GO_SPACE
  705.     BRA.S    L08AB8
  706. L08ACC    CMPI.W    #$8409,0(A6,A0.L) ;symbol 9 = ?
  707.     ADDQ.W    #2,A0
  708.     BNE.S    L08AB8
  709.     BSR.S    L08B10        ;remove item from token
  710.                 ;list
  711.     BRA.S    L08AB8
  712. L08ADA    MOVEA.L    BV_TKBAS(A6),A0    ;token list
  713.     CMPI.B    #$80,0(A6,A0.L)    ;space token
  714.     BNE.S    L08AEA
  715.     ADDQ.W    #2,A0
  716.     BSR.S    L08B10        ;remove space from token
  717.                 ;list
  718. L08AEA    CMPI.W    #$8D00,0(A6,A0.L) ;line # ?
  719.     BNE.S    L08B0E        ;return
  720.     ADDQ.W    #4,A0
  721. GO_SPACE ; remove waste spaces
  722.     CMPI.B    #$80,0(A6,A0.L)    ;space token ?
  723.     BNE.S    L08B0E        ;no -> return
  724.     MOVE.B    1(A6,A0.L),D1
  725.     ADDQ.W    #2,A0        ;next token
  726.     SUBQ.B    #1,D1
  727.     BGT.S    L08B0A
  728.     BSR.S    L08B10        ;remove space from token
  729.                 ;list
  730.     BRA.S    L08B0E
  731. L08B0A    MOVE.B    D1,-1(A6,A0.L)    ;really neccessary
  732.                 ;??????????? <----
  733. L08B0E    RTS
  734. ; remove last item from token list
  735. L08B10    LEA    -2(A0),A2    ;old value of token list
  736.                 ;pointer before inc.
  737. L08B14    MOVE.W    0(A6,A0.L),-2(A6,A0.L)
  738.     ADDQ.W    #2,A0
  739.     CMPA.L    BV_TKP(A6),A0    ;token list running pointer
  740.     BLT.S    L08B14
  741.     SUBQ.L    #2,BV_TKP(A6)    ;token list running pointer
  742.     MOVEA.L    A2,A0
  743.     RTS
  744. ; NOW SEPERATORS =:#,(){} SPACE AND CR
  745. ; THIS WAS INTERPRETED AS CODE !!! CORRECTED
  746. L08B2A    DC.L    $3D3A232C
  747.     DC.L    $28297B7D
  748.     DC.W    $200A
  749. L08B34    LSR.B    #1,D6
  750. L08B36    MOVE.B    0(A6,A0.L),D1
  751.     CMP.B    L08B2A-1(PC,D6.W),D1
  752.     BEQ.S    L08B4C
  753.     CMPI.B    #$20,D1
  754.     BNE.S    L08B58
  755.     JSR    L0858C(PC)    ;*/undomodify BSR L0858C
  756.     BRA.S    L08B36
  757. L08B4C    ADDQ.W    #1,A0
  758.     MOVEQ    #-$7C,D4
  759.     MOVE.B    D6,D5
  760.     JSR    L08DFA(PC)    ;*/undomodify BSR L08DFA
  761.     ADDQ.L    #2,(A7)
  762. L08B58    RTS
  763. TB_LIST:
  764.     DC.L    L08D2B-ORG0
  765.     DC.L    COM_SYNX-ORG0
  766. COM_SYNX ; Command syntax table
  767.     DC.L    $0022004E,$00AE0060
  768.     DC.L    $006600BC,$00C400E3,$00FA0163,$01780185
  769.     DC.L    $019901A2,$01B001BD,$01BE1401,$840F8A12
  770.     DC.L    $861E8809,$68F98C05,$90039201,$25F13500
  771.     DC.L    $00780625,$EA350000,$33E525E3,$35000035
  772.     DC.L    $0025018E,$DA004E02,$00500452,$02003202
  773.     DC.L    $00020200,$80940000,$44084812,$4C164608
  774.     DC.L    $00320200,$17160033,$02009800,$00320200
  775.     DC.L    $0200005C,$0A320200,$02190023,$0C008033
  776.     DC.L    $02009808,$00270900,$960D0080,$28F50098
  777.     DC.L    $0C00809A,$00007A09,$8028EE00,$8028E700
  778.     DC.L    $33020098,$F4004A02,$00320200,$6A041600
  779.     DC.L    $0033FC00,$660A6408,$6C0C6A11,$22150032
  780.     DC.L    $02000200,$00803202,$00980000,$32020002
  781.     DC.L    $EC006E00,$96020028,$FC800042,$0200480D
  782.     DC.L    $440B4600,$4A004C00,$4E020080,$32020002
  783.     DC.L    $00006216,$704D7219,$74217C2B,$7E29542A
  784.     DC.L    $6A337649,$9E4D0251
  785.     DC.W    $0080
  786. L08C74    DC.L    $32020098,$00003202,$009C0200,$28FC8000
  787.     DC.L    $32020002,$049C0200,$28FA8000,$12000056
  788.     DC.L    $04580200,$32020098,$00003202,$00980200
  789.     DC.L    $54020056,$04580200,$33020098,$020028FC
  790.     DC.L    $80003202,$009E0200,$22020098,$0000A000
  791.     DC.L    $002B0200,$02042B07,$0028FA2D,$00000202
  792.     DC.L    $0028FC2D,$F7009802,$00560380,$00320200
  793.     DC.B    $98,$00,$00
  794. EXP_SYNX ; Expression syntax table
  795.     DC.B    $0C,$01,$2A,$08,$10
  796.     DC.L    $0C040C02,$08009802
  797.     DC.L    $002C0400,$2A05800A,$EB00A202,$002CF600
  798.     DC.L    $0202002A,$02009802,$0028FC2C,$00000202
  799.     DC.L    $00802A02,$00A20200,$2CF80080,$0EFE2601
  800.     DC.L    $9802000E
  801.     DC.B    $F7,$80,$00
  802. L08D2B    ; Base of instruction list
  803.     DC.B    $1F
  804.     DC.L    $2024282B
  805.     DC.W    $3239
  806.     DC.L    $3E454F58
  807.     DC.L    $5B5E6267
  808.     DC.L    $6D71777F
  809.     DC.L    $84898E91
  810.     DC.L    $98A2A7AB
  811.     DC.L    $B1B5BABF
  812.     DC.W    $C636
  813.     DC.B    'END',$30,'FOR'
  814.     DC.B    $20,'IF',$60,'REPeat'
  815.     DC.B    $60,'SELect',$40,'WHEN'
  816.     DC.B    $62,'DEFine',$90,'PROCedure'
  817.     DC.B    $80,'FuNction',$22,'GO TO'
  818.     DC.B    $30,'SUB',$41,'WHEN',$50,'ERRor'
  819.     DC.B    $30,'END',$50,'ERRor',$70,'RESTORE'
  820. L08DAA    DC.B    $40,'NEXT',$40,'EXIT',$40,'ELSE'
  821.     DC.B    $20,'ON',$60,'RETurn'
  822.     DC.B    $90,'REMAINDER',$40,'DATA'
  823.     DC.B    $30,'DIM',$50,'LOCal'
  824.     DC.B    $30,'LET',$40,'THEN',$40,'STEP'
  825.     DC.B    $60,'REMark',$70,'MISTake',$00
  826. L08DFA    MOVEQ    #2,D1
  827.     BSR.S    L08E68
  828.     MOVE.B    D4,0(A6,A3.L)
  829.     MOVE.B    D5,1(A6,A3.L)
  830.     ADDQ.W    #2,A3
  831.     BRA.S    L08E5E
  832. L08E0A    MOVEQ    #$04,D1
  833.     MOVEQ    #0,D2
  834.     BSR.S    L08E76
  835. L08E10    BRA.S    L08E5E
  836. L08E12    MOVEQ    #$06,D1
  837. L08E14    MOVE.L    A1,BV_RIP(A6)    ;arith stack
  838.     BSR.S    L08E68
  839.     MOVEA.L    $0058(A6),A1    ;arith stack
  840.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  841.     MOVE.W    0(A6,A1.L),D2
  842.     ADDI.W    #$F000,D2
  843.     MOVE.W    D2,0(A6,A3.L)
  844.     MOVE.L    2(A6,A1.L),2(A6,A3.L)
  845.     ADDQ.W    #6,A3
  846.     BRA.S    L08E5E
  847. L08E38    MOVEQ    #1,D1
  848.     ADD.W    D5,D1
  849.     BVS.S    L08E64
  850. L08E3E    ADDQ.W    #4,D1
  851.     BSR.S    L08E76
  852.     BEQ.S    L08E5E
  853.     MOVE.W    D5,D1
  854. L08E46    MOVE.B    0(A6,A2.L),0(A6,A3.L)
  855.     ADDQ.W    #1,A3
  856.     ADDQ.W    #1,A2
  857.     SUBQ.W    #1,D1
  858.     BNE.S    L08E46
  859.     BTST    D7,D5
  860.     BEQ.S    L08E5E
  861.     MOVE.B    D7,0(A6,A3.L)
  862.     ADDQ.W    #1,A3
  863. L08E5E    MOVE.L    A3,BV_TKP(A6)    ;token list running pointer
  864. L08E62    RTS
  865. L08E64    ADDQ.W    #4,A7
  866.     RTS
  867. L08E68    MOVE.B    D2,-(A7)
  868.     JSR    L04E6E(PC)    ;*/undomodify BSR L04E6E
  869.     MOVE.B    (A7)+,D2
  870.     MOVEA.L    BV_TKP(A6),A3    ;token list running pointer
  871.     RTS
  872. L08E76    BSR.S    L08E68
  873.     MOVE.B    D4,0(A6,A3.L)
  874.     MOVE.B    D2,1(A6,A3.L)
  875.     MOVE.W    D5,2(A6,A3.L)
  876.     ADDQ.W    #4,A3
  877.     RTS
  878. STO_LINE ; Store compiled line
  879.     MOVEA.L    BV_TKBAS(A6),A1    ;token list
  880.     CMPI.B    #$8D,0(A6,A1.L)
  881.     BNE    L08F82
  882.     MOVE.W    2(A6,A1.L),D2
  883.     MOVE.L    BV_TKP(A6),D1    ;token list running pointer
  884.     SUB.L    A1,D1
  885.     SUBQ.W    #6,D1
  886.     SEQ    D0
  887.     ADDQ.W    #6,D1
  888.     MOVEQ    #0,D6
  889.     MOVEQ    #0,D5
  890.     MOVEA.L    BV_PFBAS(A6),A0    ;program file
  891.     MOVEQ    #0,D3
  892.     BRA.S    L08EB6
  893. L08EB2    MOVE.W    $02(A6,A0.L),D3
  894. L08EB6    ADD.W    D5,D6
  895.     ADDA.L    D6,A0
  896.     MOVE.W    0(A6,A0.L),D5
  897.     ADDQ.W    #2,A0
  898.     CMPA.L    BV_PFP(A6),A0    ;program running pointer
  899.     BLT.S    INS_LINE
  900.     ADDQ.B    #1,D0
  901.     BGT.S    L08F44
  902.     SUBQ.W    #2,A0
  903.     BRA.S    L08EFE
  904. INS_LINE ; insert new line in prog
  905.     CMP.W    2(A6,A0.L),D2
  906.     BGT.S    L08EB2
  907.     BEQ.S    L08F00
  908.     SUBQ.W    #2,A0
  909.     TST.B    D0
  910.     BNE.S    L08EFE
  911.     ADDQ.W    #2,D1
  912.     BSR    L08F84
  913.     BSR.S    L08F3A
  914.     SUBQ.W    #2,D1
  915.     MOVE.W    D1,D5
  916.     SUB.W    D6,D5
  917.     MOVE.W    D5,0(A6,A0.L)
  918.     MOVEQ    #$01,D0
  919. L08EF0    BSR    L08F92
  920.     ADD.W    0(A6,A0.L),D6
  921.     SUB.W    D1,D6
  922.     MOVE.W    D6,0(A6,A0.L)
  923. L08EFE    BRA.S    L08F5C
  924. L08F00    ; replace existing line in prog
  925.     TST.B    D0
  926.     BEQ.S    L08F06
  927.     MOVEQ    #-$02,D1
  928. L08F06    ADD.W    D6,D5
  929.     LEA    -$0002(A0),A3
  930.     ADDA.L    D5,A0
  931.     CMPA.L    BV_PFP(A6),A0    ;program running pointer
  932.     BGE.S    L08F3C
  933.     SUB.W    D5,D1
  934.     BLT.S    L08F1A
  935.     BSR.S    L08F84
  936. L08F1A    BSR.S    L08F3A
  937.     MOVEA.L    A3,A0
  938.     ADD.W    D5,D1
  939.     BGT.S    L08F2E
  940.     ADD.W    0(A6,A0.L),D5
  941.     SUB.W    D6,D5
  942.     MOVE.W    D5,0(A6,A0.L)
  943.     BRA.S    L08F5C
  944. L08F2E    MOVE.W    D1,D4
  945.     SUB.W    D6,D4
  946.     MOVE.W    D4,0(A6,A0.L)
  947.     MOVE.W    D5,D6
  948.     BRA.S    L08EF0
  949. L08F3A    BRA.S    L08FA6
  950. L08F3C    LEA    2(A3),A0
  951.     MOVE.L    A3,BV_PFP(A6)    ;program running pointer
  952. L08F44    SUBQ.W    #2,A0
  953.     TST.B    D0
  954.     BLT.S    L08F5C
  955.     ADDQ.W    #2,D1
  956.     BSR.S    L08F84
  957.     SUBQ.W    #2,D1
  958.     SUB.W    D6,D1
  959.     MOVE.W    D1,0(A6,A0.L)
  960.     BSR.S    L08F92
  961.     MOVE.L    A0,BV_PFP(A6)    ;program running pointer
  962. L08F5C    TST.B    $00B9(A6)
  963.     BEQ.S    L08F80
  964.     SF    BV_AUTO(A6)    ;Whether AUTO/EDIT
  965.                 ;is on ($FF) or off (0)
  966.     BGT.S    L08F70
  967.     MOVE.W    D3,BV_EDLIN(A6)    ;Line # to edit next
  968.     BNE.S    L08F7C
  969.     BRA.S    L08F80
  970. L08F70    CMPA.L    BV_PFP(A6),A0    ;program running pointer
  971.     BGE.S    L08F7C
  972.     MOVE.W    $04(A6,A0.L),BV_EDLIN(A6) ;Line # to
  973.                      ;edit next
  974. L08F7C    ST    BV_AUTO(A6)    ;Whether AUTO/EDIT
  975.                 ;is on ($FF) or off (0)
  976. L08F80    ADDQ.L    #2,(A7)
  977. L08F82    RTS
  978. L08F84    MOVEM.L    D0-D3/A0-A3,-(A7)
  979.     JSR    L04E82(PC)    ;*/undomodify BSR L04E82
  980.     MOVEM.L    (A7)+,D0-D3/A0-A3
  981.     RTS
  982. L08F92    ADDQ.W    #2,A0
  983.     MOVE.W    0(A6,A1.L),0(A6,A0.L)
  984.     ADDQ.W    #2,A1
  985.     CMPA.L    BV_TKP(A6),A1    ;token list running pointer
  986.     BLT.S    L08F92
  987.     ADDQ.W    #2,A0
  988.     RTS
  989. L08FA6    MOVEM.L    D0-D3/A0-A3,-(A7)
  990.     EXT.L    D1
  991.     TST.L    D1
  992.     BEQ.S    L08FE0
  993.     MOVEA.L    BV_PFP(A6),A1    ;program running pointer
  994.     BLT.S    L08FCA
  995.     LEA    0(A1,D1.W),A2
  996. L08FBA    SUBQ.W    #2,A1
  997.     SUBQ.W    #2,A2
  998.     MOVE.W    0(A6,A1.L),0(A6,A2.L)
  999.     CMPA.L    A0,A1
  1000.     BGT.S    L08FBA
  1001.     BRA.S    L08FDC
  1002. L08FCA    LEA    0(A0,D1.W),A2
  1003. L08FCE    MOVE.W    0(A6,A0.L),0(A6,A2.L)
  1004.     ADDQ.W    #2,A0
  1005.     ADDQ.W    #2,A2
  1006.     CMPA.L    A1,A0
  1007.     BLT.S    L08FCE
  1008. L08FDC    ADD.L    D1,BV_PFP(A6)    ;program running pointer
  1009. L08FE0    MOVEM.L    (A7)+,D0-D3/A0-A3
  1010.     RTS
  1011. L08FE6    ST    BV_PRINT(A6)    ;Print from prtok ($ff)
  1012.                 ;or leave in buffer
  1013.     MOVEA.L    BV_LNBAS(A6),A1    ;line # table
  1014.     MOVE.L    BV_LNP(A6),D0    ;line # running ptr
  1015.     SUB.L    A1,D0
  1016.     BNE.S    L09000
  1017.     MOVE.W    D2,D4
  1018.     BEQ.S    L09060
  1019.     MOVE.W    D2,D6
  1020.     BRA.S    L09044
  1021. L08FFE    MOVE.W    D4,D2
  1022. L09000    MOVE.W    0(A6,A1.L),D4
  1023.     TST.W    D2
  1024.     BEQ.S    L08FFE
  1025.     MOVE.W    BV_LSBAS(A6),D6    ;Bottom line in window
  1026.     CMP.W    BV_LSBEF(A6),D2    ;Invisible top line
  1027.     BLT.S    L09060
  1028.     CMP.W    D4,D2
  1029.     BLT.S    L09032
  1030.     CMP.W    BV_LSAFT(A6),D2    ;Invisible bottom line
  1031.     BGT.S    L09060
  1032.     CMP.W    D6,D2
  1033.     BGT.S    L0902A
  1034.     TST.B    D5
  1035.     BGE.S    L09044
  1036.     MOVE.W    BV_LSAFT(A6),D6    ;Invisible bottom line
  1037.     BRA.S    L09044
  1038. L0902A    TST.B    D5
  1039.     BLT.S    L09060
  1040.     MOVE.W    D2,D6
  1041.     BRA.S    L09044
  1042. L09032    TST.B    D5
  1043.     BLT.S    L09060
  1044.     MOVE.W    D2,D4
  1045.     MOVE.W    BV_MAXLN(A6),D0    ;Max. number of window lines
  1046.     SUB.W    BV_TOTLN(A6),D0    ;Number of window line so far
  1047.     BGT.S    L09044
  1048.     SUBQ.W    #1,D6
  1049. L09044    MOVE.W    D2,BV_LSFIL(A6)    ;fill window when
  1050.                 ;relisting up to here
  1051.     MOVEQ    #$10,D0        ;SD.POS position cursor at
  1052.                 ;row, column (char)
  1053.     MOVEQ    #0,D2
  1054.     MOVEQ    #0,D1
  1055.     BSR.S    L0905C
  1056.     MOVEQ    #0,D7
  1057.     JSR    TKN_LIST(PC)    ;*/undomodify BSR TKN_LIST
  1058.     MOVEQ    #$24,D0        ;clears right hand end of
  1059.                 ;cursor line
  1060.     BSR.S    L0905C
  1061.     MOVEQ    #$22,D0        ;Clears bottom of window
  1062. L0905C    MOVEQ    #-1,D3
  1063.     TRAP    #3
  1064. L09060    RTS
  1065. L09062:
  1066.     DC.L    $02020404,$02020204,$040204FB,$FB040200
  1067. L09072:
  1068.     MOVEQ    #0,D0
  1069.     MOVEQ    #6,D1
  1070.     MOVE.B    0(A6,A4.L),D0
  1071.     BEQ.S    L09098
  1072.     SUBI.B    #$80,D0
  1073.     CMPI.B    #$70,D0
  1074.     BGE.S    L09096
  1075.     MOVE.B    L09062(PC,D0.W),D1
  1076.     BGE.S    L09096
  1077.     NEG.B    D1
  1078.     ADD.W    2(A6,A4.L),D1
  1079.     BCLR    #0,D1
  1080. L09096    ADDA.L    D1,A4
  1081. L09098    MOVE.B    0(A6,A4.L),D0
  1082.     MOVE.W    0(A6,A4.L),D1
  1083.     RTS
  1084. L090A2    MOVE.L    A1,-(A7)
  1085.     MOVEA.L    BV_CHBAS(A6),A1    ;channel name
  1086.     ADDA.W    #$50,A1
  1087.     MOVE.L    0(A6,A1.L),D0
  1088.     SUB.L    A0,D0
  1089.     MOVEA.L    (A7)+,A1
  1090.     RTS
  1091. L090B6:
  1092.     MOVE.L    A5,-(A7)
  1093.     MOVEA.L    A0,A5
  1094.     BSR.S    L090A2
  1095.     SEQ    $9B(A6)        ;whether checking list
  1096.                 ;($FF) or not (0)
  1097.     BNE.S    L09108
  1098.     MOVEQ    #$0B,D0        ;get window size and cursor
  1099.                 ;position
  1100.     LEA    $A2(A6),A1    ;length of window line
  1101.     MOVEQ    #-1,D3
  1102.     TRAP    #3
  1103.     MOVE.L    BV_LNBAS(A6),BV_LNP(A6)   ;line # table ->
  1104.                 ;running pointer
  1105.     CLR.W    BV_TOTLN(A6)    ;number of window lines so far
  1106.     MOVEQ    #$64,D1
  1107.                 ;*/undoinsert MOVEQ #$44,D2
  1108.     JSR    L04E7E(PC)    ;*/undomodify BSR L04E7E
  1109.                 ;*/undomodify BSR L04E84
  1110.     MOVE.W    BV_LINUM(A6),BV_LSBEF(A6) ;Current line # ->
  1111.                 ;invisible top line
  1112.     MOVE.W    #$7FFF,BV_LSAFT(A6) ;Invisible bottom line
  1113.     BRA.S    L09108
  1114. L090EA:
  1115.     DC.W    L092F8-L090EA
  1116.     DC.W    L09314-L090EA
  1117.     DC.W    L09292-L090EA
  1118.     DC.W    L09292-L090EA
  1119.     DC.W    L09338-L090EA
  1120.     DC.W    L0930E-L090EA
  1121.     DC.W    L0931A-L090EA
  1122.     DC.W    L09292-L090EA
  1123.     DC.W    L0929C-L090EA
  1124.     DC.W    L09292-L090EA
  1125.     DC.W    L09292-L090EA
  1126.     DC.W    L092E2-L090EA
  1127.     DC.W    L092EC-L090EA
  1128.     DC.W    L09238-L090EA
  1129.     DC.W    L09308-L090EA
  1130. L09108    MOVE.L    (A2),-(A7)
  1131.     ADDQ.W    #2,A4
  1132.     MOVEQ    #0,D4
  1133.     MOVE.B    #$8D,D4
  1134. L09112    MOVE.L    (A6),4(A6)    ;Buffer base -> buffer
  1135.                 ;running pointer
  1136. L09116    CMPA.L    BV_PFP(A6),A4    ;program running pointer
  1137.     BLT.S    L09130
  1138.     TST.B    BV_PRINT(A6)    ;Print from prtok ($ff)
  1139.                 ;or leave in buffer
  1140.     BNE    L09202
  1141.     TST.B    BV_AUTO(A6)    ;Whether AUTO/EDIT
  1142.                 ;is on ($FF) or off (0)
  1143.     BEQ    L09202
  1144.     BSR    L09250
  1145. L09130    MOVEQ    #$10,D1
  1146.     BSR    L092C0
  1147.     MOVEA.L    (A7),A1
  1148.     SUBI.B    #$80,D4
  1149.     CMPI.B    #$70,D4
  1150.     BGE    L091F2
  1151.     ADD.B    D4,D4
  1152.     MOVE.W    L090EA(PC,D4.W),D4
  1153.     JSR    L090EA(PC,D4.W)
  1154.     CMPI.B    #$8D,D4
  1155.     BNE    L091F4
  1156.     TST.B    BV_PRINT(A6)    ;Print from prtok ($ff)
  1157.                 ;or leave in buffer
  1158.     BEQ    L091FE
  1159.     TST.B    BV_LSANY(A6)    ;Whether checking
  1160.                 ;list ($ff) or not (0)
  1161.     BEQ.S    L091B8
  1162.     MOVEA.L    (A6),A1
  1163.     MOVE.L    BV_BFP(A6),D2    ;buffer running pointer
  1164.     SUB.L    A1,D2
  1165.     MOVEA.L    BV_LNP(A6),A2    ;line # running ptr
  1166.     MOVE.W    BV_LSBAS(A6),0(A6,A2.L) ;Bottom line in window
  1167.     SUBQ.W    #2,D2
  1168.     DIVU    BV_LENLN(A6),D2    ;Length of window line
  1169.     ADDQ.W    #1,D2
  1170.     MOVE.W    D2,2(A6,A2.L)
  1171.     ADD.W    BV_TOTLN(A6),D2    ;Number of window line so far
  1172. L09186    CMP.W    BV_MAXLN(A6),D2    ;Max. number of window lines
  1173.     BLE.S    L091AC
  1174.     MOVE.W    BV_LSFIL(A6),D0
  1175.     BEQ.S    L09198
  1176.     CMP.W    BV_LSBAS(A6),D0    ;Bottom line in window
  1177.     BLT.S    L091E4
  1178. L09198    MOVEA.L    BV_LNBAS(A6),A2    ;line # table
  1179.     SUB.W    2(A6,A2.L),D2
  1180.     MOVE.W    0(A6,A2.L),BV_LSBEF(A6) ;Invisible top line
  1181.     ADDQ.L    #4,BV_LNBAS(A6)    ;line # table
  1182.     BRA.S    L09186
  1183. L091AC    MOVE.W    D2,BV_TOTLN(A6)    ;Number of window line so far
  1184.     ADDQ.L    #4,BV_LNP(A6)    ;line # running ptr
  1185.     JSR    L04F9E(PC)    ;*/undomodify BSR L04F9E
  1186. L091B8:
  1187.     MOVEQ    #IO.SSTRG,D0    ;send a string of bytes
  1188.     MOVEA.L    (A6),A1        ;string to be send
  1189.     MOVE.L    4(A6),D2     ;number of bytes
  1190.     SUB.L    A1,D2
  1191.     MOVEA.L    A5,A0
  1192.     MOVEQ    #-1,D3
  1193.     TRAP    #4
  1194.     TRAP    #3
  1195.     TST.L    D0
  1196.     BNE.S    L09204
  1197. ; --------------------------------------------------------------
  1198. */beginoverlay
  1199.     ifd    NoTas
  1200.                 ;*/remove MOVE.L D1,D2
  1201.                 ;*/note could be dangerous?
  1202.     MOVEQ    #$24,D0        ;SD.CLRRT clears right hand
  1203.                 ;end of cursor line
  1204.     TRAP    #3
  1205.     BSET    #7,BV_BRK(A6)    ;*/mend TAS BV_BRK(A6)
  1206.                 ;There has been a
  1207.                 ;break (0) or not ($80)
  1208.     endc
  1209. ;
  1210.     ifnd    NoTas
  1211. ;
  1212.     MOVE.L    D1,D2
  1213.     MOVEQ    #$24,D0
  1214.     TRAP    #3
  1215.     TAS    BV_BRK(A6)
  1216. ;
  1217.     endc
  1218. */endoverlay
  1219. ; --------------------------------------------------------------
  1220.     BNE    L09112
  1221.     MOVE.W    BV_LSBAS(A6),BV_LSAFT(A6) ;windows last line
  1222.     BRA.S    L09202
  1223. L091E4:
  1224.     MOVE.W    BV_LSBAS(A6),BV_LSAFT(A6) ;windows last line
  1225.     MOVE.W    -$04(A6,A2.L),BV_LSBAS(A6)
  1226.     BRA.S    L09202
  1227. L091F2    BSR.S    L09216
  1228. L091F4    JSR    L09072(PC)    ;*/undomodify BSR L09072
  1229.     MOVE.W    D0,D4
  1230.     BRA    L09116
  1231. L091FE    SUBQ.L    #1,4(A6)
  1232. L09202    MOVEQ    #0,D0
  1233. L09204    ADDQ.W    #4,A7
  1234.     MOVEA.L    A5,A0
  1235.     MOVEA.L    (A7)+,A5
  1236.     RTS
  1237. L0920C    JSR    L04E4C(PC)    ;*/undomodify BSR L04E4C
  1238.     MOVEA.L    $0058(A6),A1    ;arith stack
  1239.     RTS
  1240. L09216    BSR.S    L0920C
  1241.     MOVE.W    0(A6,A4.L),D2
  1242.     SUBI.W    #$F000,D2
  1243.     SUBQ.W    #6,A1
  1244.     MOVE.W    D2,0(A6,A1.L)
  1245.     MOVE.L    2(A6,A4.L),2(A6,A1.L)
  1246.     MOVEA.L    4(A6),A0
  1247.     JSR    CN_FTOD(PC)    ;*/undomodify BSR CN_FTOD
  1248.     BRA    L09364
  1249. L09238:
  1250.     BSR.S    L0920C
  1251.     MOVE.W    $02(A6,A4.L),D1
  1252.     TST.B    BV_PRINT(A6)    ;Print from prtok ($ff)
  1253.                 ;or leave in buffer
  1254.     BNE.S    L0925C
  1255.     TST.B    BV_AUTO(A6)    ;Whether AUTO/EDIT
  1256.                 ;is on ($FF) or off (0)
  1257.     BEQ.S    L0925C
  1258.     CMP.W    BV_EDLIN(A6),D1    ;line # to edit next
  1259.     BEQ.S    L0925C
  1260. L09250    BSR.S    L0920C
  1261.     MOVE.W    BV_EDLIN(A6),D1    ;line # to edit next
  1262.     BSR.S    L09276
  1263. L09258    ADDQ.W    #4,A7
  1264.     BRA.S    L09202
  1265. L0925C    TST.B    BV_LSANY(A6)    ;Whether checking
  1266.                 ;list ($ff) or not (0)
  1267.     BEQ.S    L09288
  1268.     CMP.W    D6,D1
  1269.     BLE.S    L09272
  1270.     TST.W    BV_LSFIL(A6)
  1271.     BNE.S    L09272
  1272.     MOVE.W    D1,BV_LSAFT(A6)    ;Invisible bottom line
  1273.     BRA.S    L09258
  1274. L09272    MOVE.W    D1,BV_LSBAS(A6)    ;Bottom line in window
  1275. L09276    SUBQ.W    #2,A1
  1276.     MOVE.W    D1,0(A6,A1.L)
  1277.     MOVEA.L    BV_BFP(A6),A0    ;buffer running pointer
  1278.     JSR    CN_ITOD(PC)    ;*/undomodify BSR CN_ITOD
  1279.     BRA    L09316
  1280. L09288    CMP.W    D6,D1
  1281.     BGT.S    L09258
  1282.     BRA.S    L09276
  1283. L0928E    DC.W    $3F3F,$3F3F
  1284. L09292:
  1285.     MOVEQ    #4,D1
  1286.     LEA    L0928E(PC),A1
  1287.     BRA    L0935A
  1288. L0929C:
  1289.     MOVE.W    2(A6,A4.L),D2
  1290.     LSL.L    #3,D2
  1291.     MOVEA.L    BV_NTBAS(A6),A1    ;name table
  1292.     ADDA.W    D2,A1
  1293.     MOVE.W    2(A6,A1.L),D2
  1294.     BLT.S    L09292
  1295.     MOVEA.L    BV_NLBAS(A6),A1    ;name list
  1296.     ADDA.W    D2,A1
  1297.     MOVEQ    #0,D1
  1298.     MOVE.B    0(A6,A1.L),D1
  1299.     ADDQ.W    #1,A1
  1300.     BRA    L09354
  1301. L092C0    SUBA.L    BV_PFBAS(A6),A4    ;program file
  1302.     SUBA.L    BV_PFBAS(A6),A1    ;program file
  1303.     MOVEM.L    D1/A1/A4,-(A7)
  1304.     JSR    L04E6A(PC)    ;*/undomodify BSR L04E6A
  1305.     MOVEA.L    4(A6),A0
  1306.     MOVEM.L    (A7)+,D1/A1/A4
  1307.     ADDA.L    BV_PFBAS(A6),A1    ;program file
  1308.     ADDA.L    BV_PFBAS(A6),A4    ;program file
  1309.     RTS
  1310. L092E2:
  1311.     BSR.S    L092E6
  1312.     BSR.S    L092EC
  1313. L092E6    MOVE.B    $01(A6,A4.L),D2
  1314.     BRA.S    L0934C
  1315. L092EC:
  1316.     MOVE.W    $02(A6,A4.L),D1
  1317.     BEQ.S    L09306
  1318.     LEA    4(A4),A1
  1319.     BRA.S    L09354
  1320. L092F8:
  1321.     MOVE.B    $1(A6,A4.L),D1
  1322.     BSR.S    L092C0
  1323. L092FE    MOVEQ    #$20,D2
  1324.     BSR.S    L0934C
  1325.     SUBQ.B    #1,D1
  1326.     BGT.S    L092FE
  1327. L09306    RTS
  1328. L09308:
  1329.     LEA    L0936C(PC),A1
  1330.     BRA.S    L0931E
  1331. L0930E:
  1332.     LEA    L0938E(PC),A1
  1333.     BRA.S    L0931E
  1334. L09314:
  1335.     BSR.S    L0931E
  1336. L09316    MOVEQ    #$20,D2
  1337.     BRA.S    L0934C
  1338. L0931A:
  1339.     LEA    L0937E(PC),A1
  1340. L0931E    MOVE.B    1(A6,A4.L),D1
  1341.     MOVE.B    0(A1,D1.W),D1
  1342.     ADDA.L    D1,A1
  1343.     MOVE.B    (A1)+,D1
  1344.     LSR.L    #4,D1
  1345.     BRA.S    L0935A
  1346. L0932E    ; separators =:#,(){} space CR
  1347.     DC.W    $3D3A,$232C,$2829,$7B7D,$200A
  1348. L09338:
  1349.     MOVE.B    $1(A6,A4.L),D1
  1350.     MOVE.B    L0932E-1(PC,D1.W),D2
  1351.     MOVEQ    #0,D4
  1352.     SUB.B    D2,D1
  1353.     BNE.S    L0934C
  1354.     ADDQ.W    #4,A4
  1355.     MOVE.B    #$8D,D4
  1356. L0934C    MOVE.B    D2,0(A6,A0.L)
  1357.     ADDQ.W    #1,A0
  1358.     BRA.S    L09364
  1359. L09354    BSR    L092C0
  1360.     ADDA.L    A6,A1
  1361. L0935A    MOVE.B    (A1)+,0(A6,A0.L)
  1362.     ADDQ.W    #1,A0
  1363.     SUBQ.W    #1,D1
  1364.     BGT.S    L0935A
  1365. L09364    MOVE.L    A0,4(A6)
  1366.     MOVEQ    #0,D0
  1367.     RTS
  1368. ; ASCII-CODE FOR SEPARATORS
  1369. ; THERE ARE 5 -EACH BYTE SHOWS DISPLACEMENT
  1370. L0936C:
  1371.     DC.B    $05,$06,$08,$0A,$0C,$0E
  1372. ; HERE THEY ARE - 10 MEANS LENGTH 1
  1373.     DC.B    $10,','
  1374.     DC.B    $10,';',$10,'\'
  1375.     DC.B    $10,'!',$20,'TO',$00
  1376. ; NEXT LIST OF 4 OPERATORS
  1377. L0937E:
  1378.     DC.B    $04,$05,$07,$09,$0C
  1379.     DC.B    $10,'-',$10,'+'
  1380.     DC.B    $20,'~~',$30,'NOT'
  1381. * NEXT LIST OF $16 OPERATORS
  1382. L0938E:
  1383.     DC.W    $1617,$191B,$1D1F,$2224,$2729,$2C2F,$3134,$373A
  1384.     DC.W    $3C3E,$4145,$494D
  1385.     DC.B    $51
  1386.     DC.B    $10,'+'
  1387.     DC.B    $10,'-'
  1388.     DC.B    $10,'*'
  1389.     DC.B    $10,'/'
  1390.     DC.B    $20,'>='
  1391.     DC.B    $10,'>'
  1392.     DC.B    $20,'=='
  1393.     DC.B    $10,'='
  1394.     DC.B    $20,'<>'
  1395.     DC.B    $20,'<='
  1396.     DC.B    $10,'<'
  1397.     DC.B    $20,'||'
  1398.     DC.B    $20,'&&'
  1399.     DC.B    $20,'^^'
  1400.     DC.B    $10,'^'
  1401.     DC.B    $10,'&'
  1402.     DC.B    $20,'OR'
  1403.     DC.B    $30,'AND'
  1404.     DC.B    $30,'XOR'
  1405.     DC.B    $30,'MOD'
  1406.     DC.B    $30,'DIV'
  1407.     DC.B    $50,'INSTR'
  1408.     DC.B    0
  1409. L093E6    ; create entry in name-table and store value
  1410.     ANDI.B    #$F,1(A6,A2.L)
  1411.     TST.L    4(A6,A2.L)
  1412.     BGE.S    L093F6
  1413.     MOVEQ    #-12,D0        ;Bad Name error
  1414.     RTS
  1415. L093F6    JSR    L04E5E(PC)    ;*/undomodify BSR L04E5E
  1416.     MOVEA.L    BV_NTP(A6),A3    ;name table running pointer
  1417.     ADDQ.L    #8,BV_NTP(A6)    ;name table
  1418.                 ;running pointer
  1419.     MOVE.W    0(A6,A2.L),0(A6,A3.L)
  1420.     MOVE.W    D4,2(A6,A3.L)
  1421.     MOVEA.L    4(A6,A2.L),A2
  1422.     ADDA.L    BV_VVBAS(A6),A2    ;variable values
  1423.     MOVE.W    4(A6,A2.L),D1
  1424.     LSL.L    #2,D1
  1425.     ADDQ.W    #6,D1
  1426.     JSR    L07338(PC)    ;*/undomodify BSR L07338
  1427. L09420    MOVE.W    0(A6,A2.L),0(A6,A0.L)
  1428.     ADDQ.W    #2,A2
  1429.     ADDQ.W    #2,A0
  1430.     SUBQ.W    #2,D1
  1431.     BGT.S    L09420
  1432. L0942E    JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1433.     CMPI.W    #$8401,D1
  1434.     BEQ.S    L09456
  1435.     CMPI.W    #$8405,D1
  1436.     BNE    L094C2
  1437.     ADDQ.W    #2,A4
  1438.     MOVEA.L    A4,A0
  1439.     LEA    8(A3),A5
  1440.     JSR    L06272(PC)    ;*/undomodify BSR L06272
  1441.     LEA    -8(A5),A3
  1442.     MOVEA.L    A0,A4
  1443.     BNE.S    L0948E
  1444.     BRA.S    L0942E
  1445. L09456    ADDQ.W    #2,A4
  1446.     CMPI.B    #$02,0(A6,A3.L)
  1447.     BEQ.S    L09478
  1448.     CMPI.B    #$01,$01(A6,A3.L)
  1449.     BGT.S    L094C6
  1450.     MOVEA.L    $04(A6,A3.L),A2
  1451.     ADDA.L    BV_VVBAS(A6),A2    ;variable values
  1452.     CMPI.W    #$0001,$04(A6,A2.L)
  1453.     BGT.S    L094C6
  1454. L09478    MOVEA.L    A4,A0
  1455.     MOVE.B    $01(A6,A3.L),D0
  1456.     MOVE.L    A3,-(A7)
  1457.     JSR    L05A84(PC)    ;*/undomodify BSR L05A84
  1458.     MOVEA.L    (A7)+,A3
  1459.     MOVEA.L    A0,A4
  1460.     BNE.S    L0948E
  1461.     JSR    BP_LET(PC)    ;*/undomodify BSR BP_LET
  1462. L0948E    CMPI.B    #$03,0(A6,A3.L)
  1463.     BNE.S    L094AA
  1464.     MOVEA.L    $04(A6,A3.L),A2
  1465.     ADDA.L    BV_VVBAS(A6),A2    ;variable values
  1466.     MOVE.L    D0,-(A7)
  1467.     MOVE.L    A3,-(A7)
  1468.     JSR    L09A3C(PC)    ;*/undomodify BSR L09A3C
  1469.     MOVEA.L    (A7)+,A3
  1470.     MOVE.L    (A7)+,D0
  1471. L094AA    CLR.L    0(A6,A3.L)
  1472.     CLR.L    $04(A6,A3.L)
  1473.     ADDQ.W    #8,A3
  1474.     CMPA.L    BV_NTP(A6),A3    ;name table running pointer
  1475.     BNE.S    L094BE
  1476.     SUBQ.L    #8,BV_NTP(A6)    ;name table running pointer
  1477. L094BE    TST.L    D0
  1478.     RTS
  1479. L094C2    MOVEQ    #-$11,D0
  1480.     BRA.S    L0948E
  1481. L094C6    MOVEQ    #-$13,D0
  1482.     BRA.S    L0948E
  1483. L094CA:
  1484.                 ;*/undoinsert MOVEQ #$16,D1
  1485.                 ;*/undoinsert MOVEQ #$3C,D2
  1486.                 ;*/undomodify BSR L04E84
  1487.     JSR    L04E64(PC)    ;*/undomodify BSR L04E64
  1488.     MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1489.     TST.B    D5
  1490.     BEQ.S    L09504
  1491.     MOVE.L    D4,D3
  1492.     MOVEA.L    BV_NTP(A6),A3    ;name table running pointer
  1493.     MOVE.L    A3,0(A6,A5.L)
  1494.     MOVE.L    A3,$04(A6,A5.L)
  1495.     MOVE.L    A3,$08(A6,A5.L)
  1496.     MOVE.W    $04(A6,A2.L),D4
  1497.     BNE.S    L094F2
  1498.     MOVEQ    #-$07,D0
  1499.     RTS
  1500. L094F2    MOVE.W    D4,$0C(A6,A5.L)
  1501.     MOVE.B    $01(A6,A2.L),$0E(A6,A5.L)
  1502.     SF    $0F(A6,A5.L)
  1503.     ADDA.W    #$0010,A5
  1504. L09504    MOVE.B    D5,0(A6,A5.L)
  1505.     MOVE.B    BV_STMNT(A6),$01(A6,A5.L) ;current stmnt on line
  1506.     MOVE.W    BV_LINUM(A6),$02(A6,A5.L) ;current line #
  1507.     MOVE.L    BV_INLIN(A6),$04(A6,A5.L) ;Processing inline clause
  1508.     ADDQ.W    #8,A5
  1509.     MOVE.L    A5,BV_RTP(A6)    ;return table running ptr
  1510.     TST.B    D5
  1511.     BEQ.S    L09580
  1512.     CMPI.B    #$03,D5
  1513.     BEQ.S    L09578
  1514.     MOVEA.L    A4,A0
  1515.     JSR    L0614A(PC)    ;*/undomodify BSR L0614A
  1516.     MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1517.     MOVE.L    BV_NTP(A6),-$14(A6,A5.L) ;name table running ptr
  1518.     MOVE.L    BV_NTP(A6),-$10(A6,A5.L) ;name table running ptr
  1519.     TST.L    D0
  1520.     BNE.S    L09552
  1521.     MOVE.W    0(A6,A0.L),D1
  1522.     CMPI.B    #$02,D5
  1523.     BEQ.S    L09562
  1524.     BSR.S    L0959E
  1525.     BEQ.S    L09576
  1526. L09552    BSR    L097C8
  1527.     SUBI.L    #$00000018,BV_RTP(A6) ;return table running ptr
  1528.     MOVEQ    #-$0F,D0
  1529.     RTS
  1530. L09562    CMPI.W    #$8406,D1
  1531.     BNE.S    L09552
  1532.     ADDQ.W    #2,A0
  1533.     SUBA.L    BV_TKBAS(A6),A0    ;token list
  1534.     MOVE.L    A0,$0008(A7)
  1535.     ADDA.L    BV_TKBAS(A6),A0    ;token list
  1536. L09576    MOVEA.L    A0,A4
  1537. L09578    ST    -$09(A6,A5.L)
  1538.     MOVEA.L    -$18(A6,A5.L),A3
  1539. L09580    TST.B    BV_SING(A6)    ;Single line execution
  1540.                 ;ON ($FF) or OFF (0)
  1541.     BEQ.S    L095A2
  1542.     BSR.S    L0958E
  1543.     BEQ.S    L095A2
  1544.     MOVEQ    #-$07,D0
  1545.     BRA.S    L095B4
  1546. L0958E    MOVEA.L    BV_PFBAS(A6),A4    ;program file
  1547.     SF    BV_SING(A6)    ;Single line execution
  1548.                 ;ON ($FF) or OFF (0)
  1549.     CLR.W    BV_LENGTH(A6)    ;current length
  1550.     JMP    L0A966(PC)    ;*/undomodify BRA L0A966
  1551. L0959E    BRA    L09686
  1552. L095A2    TST.B    D5
  1553.     BEQ    L0A078
  1554.     BSR    L09760
  1555.     BSR    L09692
  1556. L095B0    BSR.S    L0960C
  1557.     BEQ.S    L095DC
  1558. L095B4    MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1559.     MOVE.L    BV_NTP(A6),-$10(A6,A5.L)    ;name table
  1560.                     ;running pointer
  1561.     MOVE.L    BV_NTBAS(A6),D1    ;name table
  1562.     SUB.L    D1,-$18(A6,A5.L)
  1563.     SUB.L    D1,-$14(A6,A5.L)
  1564.     SUB.L    D1,-$10(A6,A5.L)
  1565.     TST.L    D0
  1566.     BNE.S    L095DA
  1567.     ADDQ.W    #4,A7
  1568.     JMP    L0A8C0(PC)    ;*/undomodify BRA L0A8C0
  1569.     MOVEQ    #0,D0
  1570. L095DA    RTS
  1571. L095DC    ADDQ.W    #2,A4
  1572.     BSR.S    L0965C
  1573.     CMPI.B    #$88,D0
  1574.     BNE.S    L095FE
  1575.     BSR.S    L09660
  1576.     BSR.S    L0965C
  1577.     CMPI.W    #$8405,D1
  1578.     BNE.S    L095FE
  1579.     ADDQ.B    #1,0(A6,A2.L)
  1580.     SUBQ.W    #4,A4
  1581.     JSR    L098E8(PC)    ;*/undomodify BSR L098E8
  1582.     BNE.S    L095B4
  1583.     BSR.S    L0965C
  1584. L095FE    CMPI.W    #$8404,D1
  1585.     BEQ.S    L095DC
  1586.     BSR.S    L0959E
  1587.     BEQ.S    L095B0
  1588.     MOVEQ    #-21,D0        ;Bad line error
  1589.     BRA.S    L095B4
  1590. L0960C    JSR    L0A60E(PC)    ;*/undomodify BSR L0A60E
  1591.     BNE.S    L09628
  1592.     BSR.S    L0965C
  1593.     MOVEQ    #0,D0
  1594.     CMPI.W    #$811E,D1
  1595.     BEQ.S    L0960C
  1596.     CMPI.W    #$8118,D1
  1597.     BEQ.S    L0960C
  1598.     CMPI.W    #$811A,D1
  1599.     RTS
  1600. L09628    MOVEQ    #-10,D0        ;End of file error
  1601.     RTS
  1602. ; <---------- ??????????
  1603. L0962C    MOVEQ    #0,D0
  1604.     MOVE.W    2(A6,A4.L),D0
  1605.     LSL.L    #3,D0
  1606.     MOVEA.L    BV_NTBAS(A6),A2    ;name table
  1607.     ADDA.L    D0,A2
  1608.     MOVE.W    0(A6,A2.L),D0
  1609.     MOVE.W    0(A6,A3.L),0(A6,A2.L)
  1610.     MOVE.W    D0,0(A6,A3.L)
  1611.     MOVE.L    4(A6,A2.L),D0
  1612.     MOVE.L    4(A6,A3.L),4(A6,A2.L)
  1613.     MOVE.L    D0,4(A6,A3.L)
  1614.     ADDQ.W    #8,A3
  1615.     ADDQ.W    #4,A4
  1616.     RTS
  1617. L0965C    JMP    L0A56C(PC)    ;*/undomodify BRA L0A56C
  1618. L09660    MOVEA.L    BV_NTP(A6),A3    ;name table running ptr
  1619.     MOVE.B    #$02,0(A6,A3.L)
  1620.     MOVE.W    #$FFFF,$02(A6,A3.L)
  1621.     MOVE.L    #$FFFFFFFF,$04(A6,A3.L)
  1622.     BSR.S    L0962C
  1623.     MOVE.B    -$07(A6,A3.L),$01(A6,A2.L)
  1624.     MOVE.L    A3,BV_NTP(A6)    ;name table running pointer
  1625.     RTS
  1626. L09686    CMPI.W    #$840A,D1
  1627.     BEQ.S    L09690
  1628.     CMPI.W    #$8402,D1
  1629. L09690    RTS
  1630. L09692    BSR.S    L0965C
  1631.     ADDQ.W    #2,A4
  1632.     BSR.S    L0965C
  1633.     ADDQ.W    #2,A4
  1634.     BSR.S    L0965C
  1635.     TST.W    D3
  1636.     BLT.S    L096A6
  1637.     CMP.W    $02(A6,A4.L),D3
  1638.     BNE.S    L096B4
  1639. L096A6    ADDQ.W    #4,A4
  1640.     BSR.S    L0965C
  1641.     CMPI.W    #$8405,D1
  1642.     BEQ.S    L096C0
  1643.     BSR.S    L09686
  1644.     BEQ.S    L096BA
  1645. L096B4    ADDQ.W    #4,A7
  1646. L096B6    MOVEQ    #-7,D0        ;Not found error
  1647.     RTS
  1648. L096BA    MOVEA.L    -$14(A6,A5.L),A3
  1649.     RTS
  1650. L096C0    ADDQ.W    #2,A4
  1651. L096C2    BSR.S    L0965C
  1652.     CMPI.B    #$88,D0
  1653.     BNE.S    L096DE
  1654.     CMPA.L    -$14(A6,A5.L),A3
  1655.     BLT.S    L096D8
  1656.     BSR.S    L09660
  1657.     MOVE.L    A3,-$14(A6,A5.L)
  1658.     BRA.S    L096C2
  1659. L096D8    BSR    L0962C
  1660.     BRA.S    L096C2
  1661. L096DE    CMPI.W    #$8406,D1
  1662.     BNE.S    L096C0
  1663. L096E4    RTS
  1664. DO_RETURn ; execute RETURN
  1665.     MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1666.     CMPA.L    BV_RTBAS(A6),A5    ;return table
  1667.     BLE.S    L096B6
  1668.     MOVE.B    -$08(A6,A5.L),D5
  1669.     BEQ.S    L09718
  1670.     MOVE.B    D5,D0
  1671.     SUBQ.B    #2,D0
  1672.     BLT.S    L09714
  1673.     MOVE.B    -$0A(A6,A5.L),D0
  1674.     MOVEA.L    A4,A0
  1675.     JSR    L05A84(PC)    ;*/undomodify BSR L05A84
  1676.     MOVEA.L    A0,A4
  1677.     BLT.S    L096E4
  1678.     BEQ.S    L09710
  1679.     MOVEQ    #-$11,D0
  1680.     RTS
  1681. L09710    MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1682. L09714    BSR.S    L09768
  1683.     BNE.S    L096E4
  1684. L09718    MOVE.L    -$04(A6,A5.L),BV_INLIN(A6) ;Processing inline clause
  1685.     MOVE.W    -$06(A6,A5.L),D4
  1686.     BSR.S    L09760
  1687.     MOVE.L    -$04(A6,A5.L),BV_INLIN(A6) ;Processing inline clause
  1688.     MOVE.B    -$07(A6,A5.L),D4
  1689.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  1690.     SUBQ.W    #8,A5
  1691.     TST.B    D5
  1692.     BEQ.S    L0973C
  1693.     SUBA.W    #$0010,A5
  1694. L0973C    SF    $0090(A6)    ;Need to unravel
  1695.                 ;($ff) or not (0)
  1696.     MOVE.L    A5,BV_RTP(A6)    ;return table running ptr
  1697.     MOVEQ    #0,D0
  1698.     SUBQ.B    #2,D5
  1699.     BLT.S    L0975C
  1700.     MOVEA.L    BV_NTP(A6),A5    ;name table running pointer
  1701.     MOVE.B    #$01,-$08(A6,A5.L)
  1702.     ADDQ.W    #8,A7
  1703.     MOVEA.L    (A7)+,A0
  1704.     ADDA.L    BV_TKBAS(A6),A0    ;token list
  1705. L0975C    TST.L    D0
  1706.     RTS
  1707. L09760    JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  1708.     JMP    L0A966(PC)    ;*/undomodify BRA L0A966
  1709. L09768    MOVE.L    BV_NTBAS(A6),D0    ;name table
  1710.     ADD.L    D0,-$18(A6,A5.L)
  1711.     ADD.L    D0,-$14(A6,A5.L)
  1712.     ADD.L    D0,-$10(A6,A5.L)
  1713.     CMPA.L    BV_PFBAS(A6),A4    ;program file
  1714.     BLE.S    L09784
  1715.     CMPA.L    BV_PFP(A6),A4    ;program running pointer
  1716.     BLT.S    L09788
  1717. L09784    BSR    L0958E
  1718. L09788    TST.B    -9(A6,A5.L)
  1719.     BEQ.S    L097C8
  1720.     MOVE.W    -$0C(A6,A5.L),D4
  1721.     MOVEA.L    -$14(A6,A5.L),A3
  1722.     BSR.S    L09760
  1723. L09798    BSR    L0960C
  1724.     BNE.S    L097B0
  1725. L0979E    MOVE.W    #$8800,D4
  1726.     JSR    L0A5E0(PC)    ;*/undomodify BSR L0A5E0
  1727.     BNE.S    L09798
  1728.     BSR    L0962C
  1729.     SUBQ.W    #4,A4
  1730.     BRA.S    L0979E
  1731. L097B0    MOVE.W    -$0C(A6,A5.L),D4
  1732.     MOVEA.L    -$18(A6,A5.L),A3
  1733.     TST.B    D0
  1734.     BEQ.S    L097C0
  1735.     BSR    L0958E
  1736. L097C0    BSR.S    L09760
  1737.     MOVEQ    #-$01,D3
  1738.     BSR    L09692
  1739. L097C8    MOVEA.L    -$18(A6,A5.L),A3
  1740.     MOVEA.L    -$10(A6,A5.L),A5
  1741.     JSR    STO_VARValue(PC)    ;*/undomodify BSR STO_VARValue
  1742.     BNE.S    L0975C
  1743.     MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1744.     RTS
  1745. L097DC    BSR.S    L097E0
  1746.     RTS
  1747. L097E0    MOVEA.L    BV_CHBAS(A6),A0    ;channel name
  1748.     MOVEA.L    0(A6,A0.L),A0
  1749.     MOVE.L    D0,-(A7)
  1750.     MOVEQ    #-$1B,D0
  1751.     JSR    UT_ERR(PC)    ;*/undomodify BSR UT_ERR
  1752.     MOVE.L    (A7)+,D0
  1753. L097F2    MOVEA.L    BV_RTP(A6),A5    ;return table running ptr
  1754.     CMPA.L    BV_RTBAS(A6),A5    ;return table
  1755.     BLE.S    L09828
  1756.     MOVE.B    -$08(A6,A5.L),D5
  1757.     BEQ.S    L0980A
  1758.     BSR    L09768
  1759.     SUBA.W    #$0010,A5
  1760. L0980A    SUBQ.W    #8,A5
  1761.     MOVE.L    A5,BV_RTP(A6)    ;return table running ptr
  1762.     SUBQ.B    #2,D5
  1763.     BLT.S    L097F2
  1764.     MOVEA.L    BV_NTP(A6),A5    ;name table running pointer
  1765.     SUBQ.W    #8,A5
  1766. L0981A    MOVEQ    #0,D2
  1767.     JSR    L05CBC(PC)    ;*/undomodify BSR L05CBC
  1768.     BNE.S    L0981A
  1769.     MOVE.L    A5,BV_NTP(A6)    ;name table running pointer
  1770.     BRA.S    L097F2
  1771. L09828    SF    BV_UNRVL(A6)    ;Need to unravel
  1772.                 ;($ff) or not (0)
  1773.     MOVEA.L    (A7)+,A3
  1774.     MOVEA.L    (A7)+,A5
  1775.     TRAP    #0
  1776.     MOVEA.L    BV_SSBAS(A6),A1    ;system stack running ptr
  1777.     ADDA.L    A6,A1
  1778.     SUBQ.W    #4,A1
  1779.     MOVE.L    A1,USP
  1780.     MOVE.W    #0,SR
  1781.     MOVE.L    A5,-(A7)
  1782.     MOVE.L    A3,-(A7)
  1783.     ST    BV_SING(A6)    ;Single line execution
  1784.                 ;ON ($FF) or OFF (0)
  1785.     TST.B    $00B8(A6)    ;
  1786.     BNE    L0A6EE
  1787.     RTS
  1788. L09852    MOVE.L    A4,-(A7)
  1789.     JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  1790.     BLT.S    L09872
  1791. L0985A    ADDQ.W    #2,A4
  1792.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1793.     MOVE.L    A4,-(A7)
  1794.     JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  1795.     CMPA.L    (A7)+,A4
  1796.     BNE.S    L09870
  1797.     TST.B    D0
  1798.     BGE.S    L0985A
  1799.     BRA.S    L09872
  1800. L09870    MOVEQ    #0,D0
  1801. L09872    MOVEA.L    (A7)+,A4
  1802.     RTS
  1803. L09876    MOVEQ    #0,D6
  1804.     MOVE.L    A4,D3
  1805. L0987A    MOVE.W    0(A6,A4.L),D1
  1806.     CMPI.W    #$810A,D1
  1807.     BEQ.S    L098A0
  1808.     JSR    L09686(PC)    ;*/undomodify BSR L09686
  1809.     BEQ.S    L098A2
  1810.     CMPI.W    #$8401,D1
  1811.     BNE.S    L0989A
  1812.     TST.B    D6
  1813.     BNE.S    L0989A
  1814.     ADDQ.W    #2,A4
  1815.     MOVE.L    A4,D3
  1816.     MOVEQ    #$01,D6
  1817. L0989A    JSR    L09072(PC)    ;*/undomodify BSR L09072
  1818.     BRA.S    L0987A
  1819. L098A0    MOVEQ    #-1,D0
  1820. L098A2    MOVEA.L    D3,A4
  1821.     RTS
  1822. L098A6    ;execute DEFine
  1823.     MOVEQ    #7,D2
  1824. L098A8    JSR    L0A60E(PC)    ;*/undomodify BSR L0A60E
  1825.     BNE.S    L098C2
  1826.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1827.     CMPI.W    #$8101,D1
  1828.     BNE.S    L098A8
  1829.     ADDQ.W    #2,A4
  1830.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1831.     CMP.B    D2,D1
  1832.     BNE.S    L098A8
  1833. L098C2    MOVEQ    #0,D0
  1834.     RTS
  1835. L098C6    ;execute DIM
  1836.     MOVEM.L    D4-D6/A5,-(A7)
  1837.     SUBQ.W    #2,A4
  1838. L098CC    ADDQ.W    #2,A4
  1839.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1840.     BSR.S    L098E8
  1841.     BNE.S    L098E2
  1842.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1843.     CMPI.W    #$8404,D1
  1844.     BEQ.S    L098CC
  1845.     MOVEQ    #0,D0
  1846. L098E2    MOVEM.L    (A7)+,D4-D6/A5
  1847.     RTS
  1848. L098E8    MOVEQ    #0,D4
  1849.     MOVE.W    $02(A6,A4.L),D4
  1850.     ADDQ.W    #4,A4
  1851.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1852.     ADDQ.W    #2,A4
  1853.     MOVEQ    #0,D5
  1854.     MOVEA.L    (A6),A5
  1855.     MOVEA.L    A4,A0
  1856. L098FC    MOVE.L    A5,-(A7)
  1857.     JSR    L05A82(PC)    ;*/undomodify BSR L05A82
  1858.     MOVEA.L    (A7)+,A5
  1859.     MOVEA.L    A0,A4
  1860.     BNE.S    L09980
  1861.     ADDQ.L    #1,D5
  1862.     MOVE.W    0(A6,A1.L),0(A6,A5.L)
  1863.     BLT.S    L0997A
  1864.     ADDQ.W    #4,A5
  1865.     ADDQ.L    #2,BV_RIP(A6)    ;arith stack
  1866.     ADDQ.W    #2,A0
  1867.     CMPI.W    #$8404,-$02(A6,A0.L)
  1868.     BEQ.S    L098FC
  1869.     CMPI.W    #$8406,-$02(A6,A0.L)
  1870.     BNE.S    L0997E
  1871.     LSL.L    #3,D4
  1872.     MOVEA.L    BV_NTBAS(A6),A3    ;name table
  1873.     ADDA.L    D4,A3
  1874.     CMPI.B    #3,0(A6,A3.L)    ;array ?
  1875.     BNE.S    L09982
  1876.     MOVE.B    1(A6,A3.L),D6    ;get variablle type
  1877.     CMPI.B    #1,D6        ;string ?
  1878.     BNE.S    L09958
  1879.     MOVE.W    -4(A6,A5.L),D1
  1880.     ADDQ.W    #1,D1
  1881.     BCLR    #0,D1
  1882.     MOVE.W    D1,-4(A6,A5.L)
  1883.     BLE.S    L0997A
  1884.     MOVEQ    #2,D1
  1885.     BRA.S    L0995A
  1886. L09958    MOVEQ    #1,D1
  1887. L0995A    MOVE.L    D5,D0
  1888.     MOVEQ    #1,D2
  1889. L0995E    SUBQ.W    #4,A5
  1890.     MOVE.W    D2,2(A6,A5.L)
  1891.     SUBQ.L    #1,D0
  1892.     BEQ.S    L09986
  1893.     MOVE.L    D1,D3
  1894.     MOVEQ    #1,D1
  1895.     ADD.W    0(A6,A5.L),D3
  1896.     MULU    D3,D2
  1897.     MOVE.L    D2,D3
  1898.     SWAP    D3
  1899.     TST.W    D3
  1900.     BEQ.S    L0995E
  1901. L0997A    MOVEQ    #-4,D0        ;out of range
  1902.     RTS
  1903. L0997E    MOVEQ    #-17,D0        ;error in expression
  1904. L09980    RTS
  1905. L09982    MOVEQ    #-12,D0        ;Bad name
  1906.     RTS
  1907. L09986    MOVEA.L    A0,A4
  1908.     MOVE.L    4(A6,A3.L),D4
  1909.     BLT.S    L09990
  1910.     BSR.S    L099FE
  1911. L09990    MOVE.L    D5,D1
  1912.     LSL.L    #2,D1
  1913.     ADDQ.L    #6,D1
  1914.     MOVE.L    A3,-(A7)
  1915.     JSR    L04DF6(PC)    ;*/undomodify BSR L04DF6
  1916.     MOVEA.L    (A7)+,A3
  1917.     MOVE.L    A0,D1
  1918.     SUB.L    BV_VVBAS(A6),D1    ;variable values
  1919.     MOVE.L    D1,$04(A6,A3.L)
  1920.     MOVE.L    A0,-(A7)
  1921.     MOVE.W    D5,$04(A6,A0.L)
  1922.     ADDQ.W    #6,A0
  1923. L099B0    MOVE.L    0(A6,A5.L),0(A6,A0.L)
  1924.     ADDQ.W    #4,A5
  1925.     ADDQ.W    #4,A0
  1926.     SUBQ.L    #1,D5
  1927.     BGT.S    L099B0
  1928.     MOVEA.L    (A6),A5
  1929.     MOVEQ    #$01,D1
  1930.     ADD.W    0(A6,A5.L),D1
  1931.     MULU    $02(A6,A5.L),D1
  1932.     SUBQ.B    #2,D6
  1933.     BLT.S    L099DC
  1934.     BEQ.S    L099D4
  1935.     ADD.L    D1,D1
  1936.     BRA.S    L099DC
  1937. L099D4    ADD.L    D1,D1
  1938.     MOVE.L    D1,D0
  1939.     ADD.L    D1,D1
  1940.     ADD.L    D0,D1
  1941. L099DC    MOVE.L    A3,-(A7)
  1942.     JSR    L04DF6(PC)    ;*/undomodify BSR L04DF6
  1943.     MOVEA.L    (A7)+,A3
  1944.     MOVE.L    A0,D2
  1945.     SUB.L    BV_VVBAS(A6),D2    ;variable values
  1946.     MOVEA.L    (A7)+,A2
  1947.     MOVE.L    D2,0(A6,A2.L)
  1948. L099F0    CLR.W    0(A6,A0.L)
  1949.     ADDQ.W    #2,A0
  1950.     SUBQ.L    #2,D1
  1951.     BGT.S    L099F0
  1952.     MOVEQ    #0,D0
  1953.     RTS
  1954. L099FE    MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  1955.     ADDA.L    D4,A2
  1956.     MOVEQ    #$01,D2
  1957.     ADD.W    $06(A6,A2.L),D2
  1958.     MULU    $08(A6,A2.L),D2
  1959.     MOVE.B    D6,D1
  1960.     SUBQ.B    #2,D1
  1961.     BLT.S    L09A22
  1962.     BEQ.S    L09A1A
  1963.     ADD.L    D2,D2
  1964.     BRA.S    L09A22
  1965. L09A1A    ADD.L    D2,D2
  1966.     MOVE.L    D2,D1
  1967.     ADD.L    D2,D2
  1968.     ADD.L    D1,D2
  1969. L09A22    MOVE.L    D2,D1
  1970.     MOVEA.L    BV_VVBAS(A6),A0    ;variable values
  1971.     ADDA.L    0(A6,A2.L),A0
  1972.     MOVE.L    A3,-(A7)
  1973.     MOVE.L    A2,-(A7)
  1974.     JSR    L04FE8(PC)    ;*/undomodify BSR L04FE8
  1975.     MOVEA.L    (A7)+,A2
  1976.     BSR.S    L09A3C
  1977.     MOVEA.L    (A7)+,A3
  1978.     RTS
  1979. L09A3C    MOVEQ    #0,D1
  1980.     MOVE.W    $04(A6,A2.L),D1
  1981.     LSL.L    #2,D1
  1982.     ADDQ.L    #6,D1
  1983.     MOVEA.L    A2,A0
  1984.     JMP    L04FE8(PC)    ;*/undomodify BRA L04FE8
  1985. L09A4C    ; execute ELSE
  1986.     MOVEQ    #0,D4
  1987. L09A4E    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  1988.     BGE.S    L09A5A
  1989.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  1990.     BNE.S    L09AA4
  1991. L09A5A    JSR    L0A60E(PC)    ;*/undomodify BSR L0A60E
  1992.     BNE.S    L09AA4
  1993.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  1994.     CMPI.B    #$81,D0
  1995.     BNE.S    L09A4E
  1996.     ADDQ.W    #2,A4
  1997.     CMPI.B    #$03,D1
  1998.     BNE.S    L09A8C
  1999.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2000.     BLT.S    L09A88
  2001.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2002.     BNE.S    L09A88
  2003. L09A7E    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2004.     BLT.S    L09A5A
  2005.     ADDQ.W    #2,A4
  2006.     BRA.S    L09A7E
  2007. L09A88    ADDQ.W    #1,D4
  2008.     BRA.S    L09A4E
  2009. L09A8C    CMPI.B    #$01,D1
  2010.     BNE.S    L09A4E
  2011.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2012.     CMPI.W    #$8103,D1
  2013.     BNE.S    L09A4E
  2014.     TST.B    D4
  2015.     BEQ.S    L09AA4
  2016.     SUBQ.W    #1,D4
  2017.     BRA.S    L09A4E
  2018. L09AA4    MOVEQ    #0,D0
  2019.     RTS
  2020. L09AA8    ; execute END
  2021.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2022.     CMPI.W    #$8107,D1
  2023.     BEQ    DO_RETURn
  2024.     CMPI.W    #$8106,D1
  2025.     BEQ.S    L09AE6
  2026.     MOVEQ    #6,D5
  2027.     CMPI.W    #$8104,D1
  2028.     BEQ.S    L09ACA
  2029.     MOVEQ    #7,D5
  2030.     CMPI.W    #$8102,D1
  2031.     BNE.S    L09B28
  2032. L09ACA    ADDQ.W    #2,A4
  2033.     JSR    L0A09E(PC)    ;*/undomodify BSR L0A09E
  2034.     BNE.S    L09B2A
  2035.     CMP.B    D5,D1
  2036.     BNE.S    L09B2E
  2037.     MOVE.W    BV_LINUM(A6),$08(A6,A2.L) ;current line #
  2038.     MOVE.B    BV_STMNT(A6),$0B(A6,A2.L) ;current stmnt on line
  2039.     JMP    L0A37A(PC)    ;*/undomodify BRA L0A37A
  2040. L09AE6    TST.B    $00C0(A6)    ;
  2041.     BNE    BAS_CONTinue
  2042. L09AEE    MOVE.W    BV_LINUM(A6),D4    ;current line #
  2043.     MOVEQ    #-1,D3
  2044.     JSR    L0ACC2(PC)    ;*/undomodify BSR L0ACC2
  2045.     BNE.S    L09B28
  2046. L09AFA    MOVE.W    $08(A6,A2.L),D4
  2047.     SEQ    BV_SING(A6)    ;Single line execution
  2048.                 ;ON ($FF) or OFF (0)
  2049.     MOVE.B    $0A(A6,A2.L),-(A7)
  2050.     MOVE.B    $0B(A6,A2.L),BV_INLIN(A6) ;Processing inline clause
  2051.     MOVE.W    $0C(A6,A2.L),BV_INDEX(A6) ;Name tab row of last lp
  2052.     ST    $08(A6,A2.L)
  2053.     JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2054.     BNE.S    L09B2C
  2055.     JSR    L0A96A(PC)    ;*/undomodify BSR L0A96A
  2056.     BNE.S    L09B2C
  2057.     MOVE.B    (A7)+,D4
  2058.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  2059. L09B28    MOVEQ    #0,D0
  2060. L09B2A    RTS
  2061. L09B2C    ADDQ.W    #2,A7
  2062. L09B2E    MOVEQ    #-$07,D0
  2063.     RTS
  2064. L09B32    MOVEQ    #0,D0
  2065.     MOVE.W    0(A6,A4.L),D1
  2066.     CMPI.W    #$8402,D1
  2067.     BEQ.S    L09B5C
  2068.     CMPI.W    #$840A,D1
  2069.     BEQ.S    L09B5A
  2070.     MOVEQ    #$01,D0
  2071.     CMPI.W    #$811C,D1
  2072.     BEQ.S    L09B5C
  2073.     MOVEQ    #$02,D0
  2074.     CMPI.W    #$8114,D1
  2075.     BEQ.S    L09B5C
  2076.     JSR    L09072(PC)    ;*/undomodify BSR L09072
  2077.     BRA.S    L09B32
  2078. L09B5A    MOVEQ    #-$01,D0
  2079. L09B5C    RTS
  2080. L09B5E    MOVE.W    BV_LINUM(A6),BV_CNLNO(A6) ;current line #
  2081.     TST.B    BV_SING(A6)    ;Single line execution
  2082.                 ;ON ($FF) or OFF (0)
  2083.     BEQ.S    L09B70
  2084.     MOVE.W    #$FFFF,BV_CNLNO(A6) ;Line to CONTINUE from
  2085. L09B70    MOVE.B    BV_STMNT(A6),BV_CNSTM(A6) ;current stmnt on line
  2086.     MOVE.B    BV_INLIN(A6),BV_CNINL(A6) ;Processing inline clause
  2087.     MOVE.W    BV_INDEX(A6),BV_CNIND(A6) ;Name tab row of last lp
  2088.     MOVE.L    BV_RTP(A6),D1    ;return table running ptr
  2089.     SUB.L    BV_RTBAS(A6),D1    ;return table
  2090.     SNE    $0090(A6)    ;Need to unravel
  2091.                 ;($ff) or not (0)
  2092.     RTS
  2093. L09B90    MOVEQ    #-$01,D0
  2094. L09B92    TST.B    $00C0(A6)
  2095.     BNE.S    L09BB6
  2096.     BSR.S    L09B5E
  2097.     BRA.S    L09BD4
  2098. L09B9C    ; error handling
  2099.     ST    BV_SING(A6)    ;Single line execution
  2100.                 ;ON ($FF) or OFF (0)
  2101.     CMPI.L    #-21,D0        ;bad line
  2102.     BEQ.S    L09B92
  2103. L09BA8    CMPI.L    #-1,D0        ;not complete
  2104.     BEQ.S    L09B92
  2105.     TST.B    $C0(A6)
  2106.     BEQ.S    L09BC0
  2107. L09BB6    BSR.S    L09BD4
  2108.     MOVEQ    #-26,D0
  2109.     JSR    UT_ERR(PC)    ;*/undomodify BSR UT_ERR
  2110.     BRA.S    L09C18
  2111. L09BC0    BSR.S    L09B5E
  2112.     MOVE.W    BV_LINUM(A6),$00C6(A6) ;current line #
  2113.     MOVE.L    D0,$00C2(A6)    ;
  2114.     BGE.S    L09C18
  2115.     MOVE.W    $00BC(A6),D4    ;
  2116.     BNE.S    L09C1C
  2117. L09BD4    MOVEA.L    BV_CHBAS(A6),A0    ;channel name
  2118.     MOVEA.L    0(A6,A0.L),A0
  2119. L09BDC    MOVE.W    #$FFFF,BV_NXLIN(A6) ;line # to start after
  2120.     TST.B    BV_SING(A6)    ;Single line execution
  2121.                 ;ON ($FF) or OFF (0)
  2122.     BNE.S    L09C14
  2123.     MOVE.L    D0,-(A7)
  2124.     MOVEQ    #-$16,D0
  2125.     JSR    UT_ERR(PC)    ;*/undomodify BSR UT_ERR
  2126.     MOVEA.L    A0,A5
  2127.     MOVEA.W    #$0068,A1
  2128.     MOVEA.L    (A6),A0
  2129.     JSR    CN_ITOD(PC)    ;*/undomodify BSR CN_ITOD
  2130.     MOVE.B    #$20,0(A6,A0.L)
  2131.     ADDQ.W    #1,D1
  2132.     MOVEA.L    (A6),A1        ;string to be send
  2133.     MOVE.W    D1,D2        ;number of bytes to be send
  2134.     MOVEA.L    A5,A0        ;channel ID
  2135.     MOVEQ    #7,D0        ;IO.SSTRG send a string of
  2136.                 ;bytes
  2137.     MOVEQ    #-1,D3
  2138.     TRAP    #4
  2139.     TRAP    #3
  2140.     MOVE.L    (A7)+,D0
  2141. L09C14    JSR    UT_ERR(PC)    ;*/undomodify BSR UT_ERR
  2142. L09C18    MOVEQ    #-1,D0        ;not complete
  2143.     RTS
  2144. L09C1C    ST    $C0(A6)        ;not defined in advanced
  2145.                 ;user guide !!!!!
  2146.     MOVE.L    D0,-(A7)
  2147.     TST.B    BV_SING(A6)    ;Single line execution
  2148.                 ;ON ($FF) or OFF (0)
  2149.     BEQ.S    L09C2E
  2150.     JSR    L0958E(PC)    ;*/undomodify BSR L0958E
  2151.     BNE.S    L09C56
  2152. L09C2E    JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2153.     JSR    L0A966(PC)    ;*/undomodify BSR L0A966
  2154.     BNE.S    L09C56
  2155.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2156.     CMPI.W    #$8106,D1
  2157.     BNE.S    L09C56
  2158.     ADDQ.W    #4,A7
  2159.     MOVE.B    $00BF(A6),BV_INLIN(A6)
  2160.     MOVE.B    $00BE(A6),D4
  2161.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  2162.     JMP    L0A90C(PC)    ;*/undomodify BRA L0A90C
  2163. L09C56    CLR.W    $BC(A6)
  2164.     SF    $C0(A6)
  2165.     MOVE.L    (A7)+,D0
  2166.     BRA    L09BD4
  2167. L09C64    ; execute EXIT
  2168.     JSR    L0A09E(PC)    ;*/undomodify BSR L0A09E
  2169.     BNE    L09CFC
  2170.     MOVE.W    8(A6,A2.L),D4
  2171.     BEQ.S    L09C88
  2172.     JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2173.     BNE.S    L09C86
  2174.     JSR    L0A966(PC)    ;*/undomodify BSR L0A966
  2175.     BNE.S    L09C86
  2176.     MOVE.B    $0B(A6,A2.L),D4
  2177.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  2178. L09C86    BRA.S    L09CFA
  2179. L09C88    MOVE.W    -$02(A6,A4.L),D4
  2180.     MOVEQ    #$07,D5
  2181.     SUB.B    D1,D5
  2182. L09C90    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2183.     BLT.S    L09C9E
  2184.     ADDQ.W    #2,A4
  2185.     ADDQ.B    #1,BV_STMNT(A6)    ;current stmnt on line
  2186.     BRA.S    L09CC0
  2187. L09C9E    TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2188.     BEQ.S    L09CB2
  2189.     SF    BV_INLIN(A6)    ;Processing inline clause
  2190.     MOVE.W    BV_LINUM(A6),D0    ;current line #
  2191.     CMP.W    $06(A6,A2.L),D0
  2192.     BEQ.S    L09CFA
  2193. L09CB2    TST.B    BV_SING(A6)    ;Single line execution
  2194.                 ;ON ($FF) or OFF (0)
  2195.     BNE.S    L09CFA
  2196.     ADDQ.W    #2,A4
  2197.     JSR    L0A966(PC)    ;*/undomodify BSR L0A966
  2198.     BNE.S    L09CFA
  2199. L09CC0    JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2200.     CMPI.W    #$8101,D1
  2201.     BNE.S    L09C90
  2202.     ADDQ.W    #2,A4
  2203.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2204.     TST.B    D5
  2205.     BEQ.S    L09CDC
  2206.     CMPI.W    #$8104,D1
  2207.     BNE.S    L09C90
  2208.     BRA.S    L09CE2
  2209. L09CDC    CMPI.W    #$8102,D1
  2210.     BNE.S    L09C90
  2211. L09CE2    ADDQ.W    #2,A4
  2212.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2213.     CMP.W    $02(A6,A4.L),D4
  2214.     BNE.S    L09C90
  2215.     MOVE.W    BV_LINUM(A6),$08(A6,A2.L) ;current line #
  2216.     MOVE.B    BV_STMNT(A6),$0B(A6,A2.L) ;current stmnt on line
  2217. L09CFA    MOVEQ    #0,D0
  2218. L09CFC    RTS
  2219. L09CFE    MOVEQ    #0,D5
  2220. L09D00    BSR.S    L09D46
  2221.     BNE.S    L09D56
  2222.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2223.     CMPI.B    #$81,D0
  2224.     BNE.S    L09D00
  2225.     ADDQ.W    #2,A4
  2226.     CMPI.B    #$01,D1
  2227.     BNE.S    L09D26
  2228.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2229.     CMPI.W    #$8105,D1
  2230.     BNE.S    L09D00
  2231.     SUBQ.W    #1,D5
  2232.     BLT.S    L09D56
  2233.     BRA.S    L09D00
  2234. L09D26    CMPI.B    #$05,D1
  2235.     BNE.S    L09D00
  2236.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2237.     BLT.S    L09D38
  2238.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2239.     BEQ.S    L09D3C
  2240. L09D38    ADDQ.W    #1,D5
  2241.     BRA.S    L09D00
  2242. L09D3C    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2243.     BLT.S    L09D00
  2244.     ADDQ.W    #2,A4
  2245.     BRA.S    L09D3C
  2246. L09D46    JSR    L0A60E(PC)    ;*/undomodify BSR L0A60E
  2247.     BNE.S    L09D64
  2248.     TST.B    D0
  2249.     BEQ.S    L09D56
  2250.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2251.     BNE.S    L09D5A
  2252. L09D56    MOVEQ    #0,D0
  2253.     RTS
  2254. L09D5A    SUBQ.W    #8,A4
  2255.     MOVE.W    $02(A6,A4.L),D0
  2256.     SUB.W    D0,BV_LENGTH(A6)    ;current length
  2257. L09D64    TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2258.     BGT.S    L09D6E
  2259.     SF    BV_INLIN(A6)    ;Processing inline clause
  2260. L09D6E    MOVEQ    #$01,D0
  2261.     RTS
  2262. L09D72    MOVEQ    #0,D5
  2263. L09D74:
  2264.     JSR    L09D46(PC)    ;*/undomodify BSR.S L09D46
  2265.                 ;*/undomodify nop
  2266.     BNE.S    L09DEC
  2267.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2268.     CMPI.W    #$8401,D1
  2269.     BNE.S    L09D8C
  2270.     ADDQ.W    #2,A4
  2271.     TST.B    D5
  2272.     BEQ.S    L09DEE
  2273.     BRA.S    L09D74
  2274. L09D8C:
  2275.     CMPI.B    #$81,D0
  2276.     BNE.S    L09D74
  2277.     CMPI.B    #$15,D1
  2278.     BNE.S    L09DB6
  2279.     TST.B    D5
  2280.     BNE.S    L09D74
  2281.     JSR    L09876(PC)    ;*/undomodify BSR L09876
  2282.     BLT.S    L09D74
  2283.     MOVEA.L    A4,A3
  2284. L09DA4    SUBQ.W    #2,A3
  2285.     CMPI.W    #$8800,0(A6,A3.L)
  2286.     BNE.S    L09DA4
  2287.     CMP.W    $02(A6,A3.L),D4
  2288.     BNE.S    L09D74
  2289.     BRA.S    L09DEE
  2290. L09DB6    CMPI.B    #$05,D1
  2291.     BNE.S    L09DD6
  2292.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2293.     BLT.S    L09DC8
  2294.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2295.     BEQ.S    L09DCC
  2296. L09DC8    ADDQ.W    #1,D5
  2297.     BRA.S    L09D74
  2298. L09DCC    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2299.     BLT.S    L09D74
  2300.     ADDQ.W    #2,A4
  2301.     BRA.S    L09DCC
  2302. L09DD6    CMPI.B    #$01,D1
  2303.     BNE.S    L09D74
  2304.     ADDQ.W    #2,A4
  2305.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2306.     CMPI.W    #$8105,D1
  2307.     BNE.S    L09D74
  2308.     SUBQ.W    #1,D5
  2309.     BGE.S    L09D74
  2310. L09DEC    RTS
  2311. L09DEE    MOVEQ    #0,D0
  2312.     RTS
  2313. L09DF2    ; execute FOR
  2314.     MOVEA.L    A4,A5
  2315.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2316.     MOVEQ    #0,D4
  2317.     MOVE.W    2(A6,A4.L),D4
  2318.     ADDQ.W    #4,A4
  2319.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2320.     BLT.S    L09E10
  2321.     MOVE.B    #1,BV_INLIN(A6)    ;Processing inline clause
  2322.     MOVE.W    D4,BV_INDEX(A6)    ;Name tab row of last lp
  2323. L09E10    JSR    L09F96(PC)    ;*/undomodify BSR L09F96
  2324.     MOVE.B    1(A6,A2.L),D2
  2325.     SUBQ.B    #2,D2
  2326.     BNE.S    L09E30        ;bad name
  2327.     MOVE.B    0(A6,A2.L),D2
  2328.     MOVEQ    #6,D1
  2329.     SUBQ.B    #2,D2
  2330.     BEQ.S    L09E34
  2331.     MOVEQ    #$0C,D1
  2332.     SUBQ.B    #4,D2
  2333.     BEQ.S    L09E34
  2334.     SUBQ.B    #1,D2
  2335.     BEQ.S    L09E5C
  2336. L09E30    MOVEQ    #-12,D0        ;Bad name error
  2337.     RTS
  2338. L09E34    MOVE.L    A2,-(A7)
  2339.     MOVE.L    4(A6,A2.L),D2
  2340.     BLT.S    L09E46
  2341.     MOVEA.L    BV_VVBAS(A6),A0    ;variable values
  2342.     ADDA.L    D2,A0
  2343.     JSR    L04FE8(PC)    ;*/undomodify BSR L04FE8
  2344. L09E46    MOVEQ    #$1A,D1
  2345.     JSR    L04DF6(PC)    ;*/undomodify BSR L04DF6
  2346.     SUBA.L    BV_VVBAS(A6),A0    ;variable values
  2347.     MOVEA.L    (A7)+,A2
  2348.     MOVE.B    #$07,0(A6,A2.L)    ;set FOR LOOP index Flag
  2349.     MOVE.L    A0,4(A6,A2.L)
  2350. L09E5C:
  2351.     JSR    L0A2FE(PC)    ;*/undomodify BSR L0A2FE
  2352.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2353.     MOVE.L    A4,D0
  2354.     SUB.L    A5,D0
  2355.     MOVE.L    D7,$0C(A6,A2.L)
  2356.     MOVE.L    D7,$10(A6,A2.L)
  2357.     MOVE.L    D7,$14(A6,A2.L)
  2358.     MOVE.W    D0,$18(A6,A2.L)
  2359.     JSR    L09E88(PC)    ;*/undomodify BSR.S L09E88
  2360.                 ;*/undomodify nop
  2361.     BGT.S    L09E80
  2362.     RTS
  2363. L09E80:
  2364.     MOVEQ    #0,D5
  2365.     JMP    L09C90(PC)    ;*/undomodify BRA L09C90
  2366. L09E86    DC.B    $01
  2367. L09E87    DC.B    $40
  2368. L09E88    MOVE.L    A4,-(A7)
  2369.     MOVE.W    0(A6,A4.L),D1
  2370.     JSR    L09686(PC)    ;*/undomodify BSR L09686
  2371.     BNE.S    L09E98
  2372.     MOVEQ    #$01,D0
  2373.     BRA.S    L09EA6
  2374. L09E98    CMPI.W    #$8401,D1
  2375.     BEQ.S    L09EAA
  2376.     CMPI.W    #$8404,D1
  2377.     BEQ.S    L09EAA
  2378.     MOVEQ    #-4,D0        ;out of ange error
  2379. L09EA6    ADDQ.W    #4,A7
  2380.     RTS
  2381. L09EAA    ADDQ.W    #2,A4
  2382.     MOVEA.L    A4,A0
  2383.     MOVE.L    D4,D6
  2384.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  2385.     MOVEA.L    A0,A4
  2386.     BNE.S    L09EA6
  2387.     BSR    L09F7E
  2388.     MOVE.W    0(A6,A1.L),0(A6,A2.L)
  2389.     MOVE.L    2(A6,A1.L),2(A6,A2.L)
  2390.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2391.     CMPI.W    #$810B,0(A6,A4.L)
  2392.     BEQ.S    L09EF4
  2393.     MOVE.W    0(A6,A2.L),$0C(A6,A2.L)
  2394.     MOVE.L    2(A6,A2.L),$0E(A6,A2.L)
  2395.     MOVE.W    D7,$12(A6,A2.L)
  2396.     MOVE.L    D7,$14(A6,A2.L)
  2397.     MOVE.L    A4,D0
  2398.     SUB.L    (A7)+,D0
  2399.     ADD.W    D0,$18(A6,A2.L)
  2400.     BRA    L09F76
  2401. L09EF4    ADDQ.W    #2,A4
  2402.     MOVEA.L    A4,A0
  2403.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  2404.     MOVEA.L    A0,A4
  2405. L09EFE    BNE.S    L09EA6
  2406.     bsr.s    L09F7E
  2407.     MOVE.W    0(A6,A1.L),$0C(A6,A2.L)
  2408.     MOVE.L    $02(A6,A1.L),$0E(A6,A2.L)
  2409.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2410.     CMPI.W    #$811D,0(A6,A4.L)
  2411.     BEQ.S    L09F32
  2412.     MOVE.B    #8,$12(A6,A2.L)
  2413.     MOVE.B    L09E86(PC),$13(A6,A2.L) ;must have to do with
  2414.                       ;STEP
  2415.     MOVE.L    D7,$14(A6,A2.L)
  2416.     MOVE.B    L09E87(PC),$14(A6,A2.L) ;must have to do with
  2417.                       ;step
  2418.     BRA.S    L09F50
  2419. L09F32    ADDQ.W    #2,A4
  2420.     MOVEA.L    A4,A0
  2421.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  2422.     MOVEA.L    A0,A4
  2423.     BNE.S    L09EFE
  2424.     BSR.S    L09F7E
  2425.     MOVE.W    0(A6,A1.L),$12(A6,A2.L)
  2426.     MOVE.L    $02(A6,A1.L),$14(A6,A2.L)
  2427.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2428. L09F50    MOVE.L    A4,D0
  2429.     SUB.L    (A7)+,D0
  2430.     ADD.W    D0,$18(A6,A2.L)
  2431.     JSR    L04E4C(PC)    ;*/undomodify BSR L04E4C
  2432.     MOVEA.L    $0058(A6),A1    ;arith stack
  2433.     SUBQ.W    #6,A1
  2434.     MOVE.L    $02(A6,A2.L),$02(A6,A1.L)
  2435.     MOVE.W    0(A6,A2.L),0(A6,A1.L)
  2436.     JSR    L0A404(PC)    ;*/undomodify BSR L0A404
  2437.     BRA.S    L09F78
  2438.     BRA.S    L09F7A
  2439. L09F76    MOVEQ    #0,D0
  2440. L09F78    RTS
  2441. L09F7A    BRA    L09E88
  2442. L09F7E    MOVE.L    D6,D4
  2443. L09F80    BSR.S    L09F96
  2444.     MOVE.B    0(A6,A2.L),D1
  2445.     MOVE.B    1(A6,A2.L),D2
  2446.     MOVE.L    4(A6,A2.L),D0
  2447.     MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  2448.     ADDA.L    D0,A2
  2449.     RTS
  2450. L09F96    MOVE.L    D4,D0
  2451.     MOVEA.L    BV_NTBAS(A6),A2    ;name table
  2452.     LSL.L    #3,D0
  2453.     ADDA.W    D0,A2
  2454.     RTS
  2455. L09FA2    TST.B    BV_SING(A6)    ;Single line execution
  2456.                 ;ON ($FF) or OFF (0)
  2457.     BEQ.S    L09FAE
  2458.     MOVEA.L    BV_TKBAS(A6),A4    ;token list
  2459.     BRA.S    L0A006
  2460. L09FAE    CMPI.W    #$840A,0(A6,A4.L)
  2461.     BEQ.S    L09FBC
  2462.     JSR    L09072(PC)    ;*/undomodify BSR L09072
  2463.     BRA.S    L09FAE
  2464. L09FBC    ADDQ.W    #2,A4
  2465. L09FBE    MOVEQ    #0,D1
  2466.     MOVEQ    #0,D2
  2467.     CMP.W    BV_LINUM(A6),D4    ;current line #
  2468.     BLE.S    L09FEC
  2469. L09FC8    CMPA.L    BV_PFP(A6),A4    ;program running pointer
  2470.     BLT.S    L09FD2
  2471.     JMP    L0A994(PC)    ;*/undomodify BRA L0A994
  2472. L09FD2    CMP.W    4(A6,A4.L),D4
  2473.     BLE.S    L0A006
  2474. L09FD8    MOVE.W    4(A6,A4.L),D2
  2475.     MOVE.W    0(A6,A4.L),D1
  2476.     ADDQ.W    #2,A4
  2477.     ADD.W    D1,BV_LENGTH(A6)    ;current length
  2478.     ADDA.W    BV_LENGTH(A6),A4    ;current length
  2479.     BRA.S    L09FC8
  2480. L09FEC    SUBA.W    BV_LENGTH(A6),A4    ;current length
  2481.     SUBQ.W    #2,A4
  2482.     MOVE.W    0(A6,A4.L),D1
  2483.     SUB.W    D1,BV_LENGTH(A6)    ;current length
  2484.     CMP.W    $04(A6,A4.L),D4
  2485.     BGT.S    L09FD8
  2486.     CMPA.L    BV_PFBAS(A6),A4    ;program file
  2487.     BGT.S    L09FEC
  2488. L0A006    MOVEQ    #0,D0
  2489.     RTS
  2490. L0A00A    CMP.B    BV_STMNT(A6),D4    ;current stmnt on line
  2491.     BLE.S    L0A01E
  2492.     JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2493.     BLT.S    L0A01E
  2494.     ADDQ.W    #2,A4
  2495.     ADDQ.B    #1,BV_STMNT(A6)    ;current stmnt on line
  2496.     BRA.S    L0A00A
  2497. L0A01E    MOVEQ    #0,D0
  2498.     RTS
  2499. L0A022    ; execute GO
  2500.     MOVEQ    #$01,D4
  2501.     BRA.S    L0A038
  2502. L0A026    ; execute ON ...
  2503.     JSR    L09876(PC)    ;*/undomodify BSR L09876
  2504.     BGE    L09CFE
  2505.     BSR.S    L0A086
  2506.     MOVE.W    0(A6,A1.L),D4
  2507.     BLE.S    L0A082
  2508.     ADDQ.W    #2,A4
  2509. L0A038    JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2510.     CMPI.B    #$0B,D1
  2511.     SEQ    D5
  2512. L0A042    MOVE.W    0(A6,A4.L),D1
  2513.     JSR    L09686(PC)    ;*/undomodify BSR L09686
  2514.     BEQ.S    L0A082
  2515.     ADDQ.W    #2,A4
  2516.     BSR.S    L0A086
  2517.     BGT.S    L0A042
  2518.     SUBQ.W    #1,D4
  2519.     BNE.S    L0A042
  2520.     MOVE.W    0(A6,A1.L),D4
  2521.     TST.B    D5
  2522.     BEQ    L094CA
  2523.     SF    BV_INLIN(A6)    ;Processing inline clause
  2524.     TST.B    BV_SING(A6)    ;Single line exection
  2525.                 ;ON ($FF) or OFF (0)
  2526.     BEQ.S    L0A078
  2527.     SF    BV_SING(A6)    ;Single line execution
  2528.                 ;ON ($FF) or OFF (0)
  2529.     MOVEA.L    BV_PFBAS(A6),A4    ;program file
  2530.     JSR    L0A966(PC)    ;*/undomodify BSR L0A966
  2531.     BNE.S    L0A07E
  2532. L0A078    JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2533.     SUBQ.W    #2,A4
  2534. L0A07E    MOVEQ    #0,D0
  2535.     RTS
  2536. L0A082    MOVEQ    #-$04,D0
  2537.     RTS
  2538. L0A086    MOVEA.L    A4,A0
  2539.     JSR    L05A82(PC)    ;*/undomodify BSR L05A82
  2540.     MOVEA.L    A0,A4
  2541.     BLT.S    L0A09A
  2542.     BGT.S    L0A098
  2543.     ADDQ.L    #2,BV_RIP(A6)    ;arith stack
  2544.     MOVEQ    #0,D0
  2545. L0A098    RTS
  2546. L0A09A    ADDQ.W    #4,A7
  2547.     RTS
  2548. L0A09E    JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2549.     MOVEQ    #0,D4
  2550.     MOVE.W    $02(A6,A4.L),D4
  2551.     ADDQ.W    #4,A4
  2552. L0A0AA    JSR    L09F80(PC)    ;*/undomodify BSR L09F80
  2553.     MOVEQ    #0,D0
  2554.     MOVE.B    D1,D0
  2555.     SUBQ.B    #6,D0
  2556.     BEQ.S    L0A0BC
  2557.     SUBQ.B    #1,D0
  2558.     BEQ.S    L0A0BC
  2559.     MOVEQ    #-$07,D0
  2560. L0A0BC    RTS
  2561. L0A0BE    ; execute IF
  2562.     MOVEA.L    A4,A0
  2563.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  2564.     MOVEA.L    A0,A4
  2565.     BNE    L0A150
  2566.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2567.     BLT.S    L0A0DA
  2568.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2569.     BNE.S    L0A0DA
  2570.     ST    BV_INLIN(A6)    ;Processing inline clause
  2571. L0A0DA    ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2572.     TST.W    0(A6,A1.L)
  2573.     BNE.S    L0A14E
  2574.     MOVEQ    #0,D4
  2575. L0A0E6    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2576.     BGE.S    L0A0F2
  2577.     TST.B    BV_INLIN(A6)    ;Processing inline clause
  2578.     BNE.S    L0A14E
  2579. L0A0F2    JSR    L0A60E(PC)    ;*/undomodify BSR L0A60E
  2580.     BNE.S    L0A14E
  2581.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2582.     CMPI.B    #$81,D0
  2583.     BNE.S    L0A0E6
  2584.     ADDQ.W    #2,A4
  2585.     CMPI.B    #$03,D1
  2586.     BNE.S    L0A124
  2587.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  2588.     BLT.S    L0A120
  2589.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2590.     BNE.S    L0A120
  2591. L0A116    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  2592.     BLT.S    L0A0F2
  2593.     ADDQ.W    #2,A4
  2594.     BRA.S    L0A116
  2595. L0A120    ADDQ.W    #1,D4
  2596.     BRA.S    L0A0E6
  2597. L0A124    CMPI.B    #$01,D1
  2598.     BNE.S    L0A13C
  2599.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2600.     CMPI.W    #$8103,D1
  2601.     BNE.S    L0A0E6
  2602.     TST.B    D4
  2603.     BEQ.S    L0A14E
  2604.     SUBQ.W    #1,D4
  2605.     BRA.S    L0A0E6
  2606. L0A13C    CMPI.B    #$14,D1
  2607.     BNE.S    L0A0E6
  2608.     TST.B    D4
  2609.     BEQ.S    L0A14C
  2610.     ADDQ.B    #1,BV_STMNT(A6)    ;current stmnt on line
  2611.     BRA.S    L0A0E6
  2612. L0A14C    SUBQ.W    #2,A4
  2613. L0A14E    MOVEQ    #0,D0
  2614. L0A150    RTS
  2615. L0A152    ; used to execute depending instructions
  2616.     DC.W    L09AA8-L0A190    ;END
  2617.     DC.W    L09DF2-L0A190    ;FOR
  2618.     DC.W    L0A0BE-L0A190    ;IF
  2619.     DC.W    L0A7B6-L0A190    ;REPEAT
  2620.     DC.W    L0A84A-L0A190    ;SELECT
  2621.     DC.W    L0AC00-L0A190    ;WHEN
  2622.     DC.W    L098A6-L0A190    ;DEFINE
  2623.     DC.W    $0        ;PROCEDURE:USELESS IF ALONE
  2624.     DC.W    $0        ;FUNCTION: USELESS IF ALONE
  2625.     DC.W    L0A022-L0A190    ;GO
  2626.     DC.W    $0        ;TO:USELESS IF ALONE
  2627.     DC.W    $0        ;SUB: USELESS F ALONE
  2628.     DC.W    $0        ;WHEN: USELESS IF ALONE
  2629.     DC.W    $0        ;ERROR: USELESS IF ALONE
  2630.     DC.W    $0        ;EOF
  2631.     DC.W    $0        ;INPUT
  2632.     DC.W    L0A820-L0A190    ;RESTORE
  2633.     DC.W    L0A372-L0A190    ;NEXT
  2634.     DC.W    L09C64-L0A190    ;EXIT
  2635.     DC.W    L09A4C-L0A190    ;ELSE
  2636.     DC.W    L0A026-L0A190    ;ON
  2637.     DC.W    DO_RETURn-L0A190    ;RETURN
  2638.     DC.W    $0        ;REMAINDER
  2639.     DC.W    L0A7B2-L0A190    ;DATA
  2640.     DC.W    L098C6-L0A190    ;DIM
  2641.     DC.W    L0A2FA-L0A190    ;LOCAL
  2642.     DC.W    L0A332-L0A190    ;LET
  2643.     DC.W    $0        ;THEN
  2644.     DC.W    $0        ;STEP
  2645.     DC.W    L0A7B2-L0A190    ;REMARK
  2646.     DC.W    L0A2FA-L0A190    ;MISTAKE
  2647. L0A190:
  2648.     MOVEQ    #0,D0
  2649.     MOVE.B    1(A6,A4.L),D0
  2650.     ADDQ.W    #2,A4
  2651.     ADD.B    D0,D0
  2652.     MOVE.W    L0A150(PC,D0.W),D0
  2653.     BEQ.S    L0A1A4
  2654.     JMP    L0A190(PC,D0.W)
  2655. L0A1A4    MOVEQ    #-7,D0        ;Not found
  2656.     RTS
  2657. L0A1A8    MOVEA.L    A2,A3
  2658.     ANDI.B    #$0F,1(A6,A3.L)
  2659.     MOVE.L    A3,-(A7)
  2660.     MOVE.B    $01(A6,A3.L),-(A7)
  2661.     JSR    L07A8E(PC)    ;*/undomodify BSR L07A8E
  2662.     BNE.S    L0A1E8
  2663.     CMPI.W    #$8405,D1
  2664.     BNE.S    L0A1F6
  2665.     CMPI.B    #1,1(A6,A3.L)
  2666.     BNE.S    L0A242
  2667.     MOVE.L    4(A6,A3.L),D0
  2668.     BLT.S    L0A242
  2669.     MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  2670.     ADDA.L    D0,A2
  2671.     MOVE.L    D0,-(A7)
  2672.     LEA    2(A4),A0
  2673.     JSR    L06446(PC)    ;*/undomodify BSR L06446
  2674.     MOVEA.L    A0,A4
  2675.     MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  2676.     ADDA.L    (A7)+,A2
  2677. L0A1E8    BNE.S    L0A244
  2678.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2679.     CMPI.W    #$8401,D1
  2680.     BNE.S    L0A242
  2681.     SF    (A7)
  2682. L0A1F6    CMPI.W    #$8401,D1
  2683.     BNE.S    L0A242
  2684.     ADDQ.W    #2,A4
  2685.     MOVE.B    (A7),D0
  2686.     MOVEA.L    A4,A0
  2687.     SUBA.L    BV_VVBAS(A6),A2    ;variable values
  2688. ; --------------------------------------------------------------
  2689. ;*/beginoverlay
  2690. ;*/note when error fix donated by Simon N Goodwin
  2691.     move.l    a2,-(a7)     ;*/note movem.l  a2/a4,-(a7)
  2692.     JSR    L05A84(PC)    ;*/undomodify BSR L05A84
  2693.     movea.l    $0028(a6),a2    ;*/note movem.l  (a7)+,a2/a4
  2694.     adda.l    (a7)+,a2     ;*/note adda.l   $0028(a6),a2
  2695.     movea.l    a0,a4        ;*/note bne.s    L0A23C
  2696.     bne.s    L0A23C        ;*/note movea.l  a0,a4
  2697. ;*/endoverlay
  2698. ; --------------------------------------------------------------
  2699.     MOVE.B    (A7)+,D0
  2700.     MOVEA.L    (A7)+,A3
  2701.     MOVE.B    D0,$01(A6,A3.L)
  2702.     JSR    BP_LET(PC)    ;*/undomodify BSR BP_LET
  2703.     BNE.S    L0A23A
  2704.     TST.W    $C8(A6)
  2705.     BEQ.S    L0A23A
  2706.     MOVE.B    0(A6,A3.L),D1
  2707.     SUBQ.B    #2,D1
  2708.     BEQ.S    L0A248
  2709.     SUBQ.B    #4,D1
  2710.     BEQ.S    L0A248
  2711.     SUBQ.B    #1,D1
  2712.     BEQ.S    L0A248
  2713. L0A23A    RTS
  2714. L0A23C    BLT.S    L0A244
  2715.     MOVEQ    #-$11,D0
  2716.     BRA.S    L0A244
  2717. L0A242    ; handling of MISTake and LOCal
  2718.     MOVEQ    #-$0C,D0
  2719. L0A244    ADDQ.W    #6,A7
  2720.     RTS
  2721. L0A248    ; initialize WHEN
  2722.     MOVE.L    A3,D4
  2723.     SUB.L    BV_NTBAS(A6),D4    ;name table
  2724.     LSR.L    #3,D4
  2725.     MOVEQ    #1,D3
  2726.     JSR    L0ACC2(PC)    ;*/undomodify BSR L0ACC2
  2727. L0A256    BNE    L0A2DA
  2728.     TST.W    $08(A6,A2.L)
  2729.     BLT.S    L0A268
  2730. L0A260    MOVEQ    #1,D3
  2731.     JSR    L0ACDA(PC)    ;*/undomodify BSR L0ACDA
  2732.     BRA.S    L0A256
  2733. L0A268    MOVE.W    BV_LINUM(A6),$08(A6,A2.L) ;current line #
  2734.     MOVE.B    BV_STMNT(A6),$0A(A6,A2.L) ;current stmnt on line
  2735.     MOVE.B    BV_INLIN(A6),$0B(A6,A2.L) ;Processing inline clause
  2736.     MOVE.W    BV_INDEX(A6),$0C(A6,A2.L) ;Name tab row of last lp
  2737.     MOVE.W    D4,-(A7)
  2738.     MOVE.W    D2,-(A7)
  2739.     MOVE.L    D1,-(A7)
  2740.     MOVE.W    $02(A6,A2.L),D4
  2741.     MOVE.B    $04(A6,A2.L),D1
  2742.     SUBA.L    BV_VVBAS(A6),A2    ;variable values
  2743.     MOVE.L    A2,-(A7)
  2744.     MOVE.B    D1,-(A7)
  2745.     TST.B    BV_SING(A6)    ;Single line execution
  2746.                 ;ON ($FF) or OFF (0)
  2747.     BEQ.S    L0A2A0
  2748.     JSR    L0958E(PC)    ;*/undomodify BSR L0958E
  2749. L0A2A0    JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2750.     BNE.S    L0A2F2
  2751.     JSR    L0A96A(PC)    ;*/undomodify BSR L0A96A
  2752.     BNE.S    L0A2F2
  2753.     MOVE.B    (A7)+,D4
  2754.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  2755.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2756.     LEA    2(A4),A0
  2757.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  2758.     MOVEA.L    A0,A4
  2759.     MOVEA.L    (A7)+,A2
  2760.     BNE.S    L0A2F6
  2761.     ADDA.L    BV_VVBAS(A6),A2    ;variable values
  2762.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2763.     TST.W    0(A6,A1.L)
  2764.     BEQ.S    L0A2DE
  2765.     ADDQ.W    #8,A7
  2766.     MOVE.B    $0E(A6,A2.L),BV_INLIN(A6) ;Processing inline clause
  2767. L0A2DA    MOVEQ    #0,D0
  2768.     RTS
  2769. L0A2DE    MOVE.L    A2,-(A7)
  2770.     JSR    L09AFA(PC)    ;*/undomodify BSR L09AFA
  2771.     MOVEA.L    (A7)+,A2
  2772.     BNE.S    L0A2F6
  2773.     MOVE.L    (A7)+,D1
  2774.     MOVE.W    (A7)+,D2
  2775.     MOVE.W    (A7)+,D4
  2776.     BRA    L0A260
  2777. L0A2F2    MOVEQ    #-7,D0        ;Not found error
  2778.     ADDQ.W    #6,A7
  2779. L0A2F6    ADDQ.W    #8,A7
  2780.     RTS
  2781. L0A2FA    ; execute LOCal and MISTake
  2782.     MOVEQ    #-21,D0        ;bad line error
  2783.     RTS
  2784. L0A2FE    MOVEA.L    $04(A6,A2.L),A2
  2785.     ADDA.L    BV_VVBAS(A6),A2    ;variable values
  2786.     MOVE.W    D7,0(A6,A2.L)
  2787.     MOVE.L    D7,$02(A6,A2.L)
  2788.     MOVE.W    BV_LINUM(A6),D1    ;current line #
  2789.     MOVE.B    BV_STMNT(A6),D0    ;current stmnt on line
  2790.     CMP.W    $06(A6,A2.L),D1
  2791.     BNE.S    L0A322
  2792.     CMP.B    $0A(A6,A2.L),D0
  2793.     BEQ.S    L0A32E
  2794. L0A322    MOVE.W    D1,$06(A6,A2.L)
  2795.     MOVE.L    D7,$08(A6,A2.L)
  2796.     MOVE.B    D0,$0A(A6,A2.L)
  2797. L0A32E    MOVEQ    #0,D0
  2798.     RTS
  2799. L0A332    ; handling of LET
  2800.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2801.     CMPI.B    #$88,D0
  2802.     BNE.S    L0A36E
  2803. L0A33C    MOVEQ    #0,D4
  2804.     MOVE.W    2(A6,A4.L),D4
  2805.     ADDQ.W    #4,A4
  2806.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2807.     JSR    L09F96(PC)    ;*/undomodify BSR L09F96
  2808.     MOVE.B    0(A6,A2.L),D0
  2809.     CMPI.B    #$03,D0
  2810.     BEQ    L093E6
  2811.     CMPI.B    #$08,D0
  2812.     BEQ    L0A6F6
  2813.     MOVEQ    #$01,D5
  2814.     CMPI.B    #$04,D0
  2815.     BEQ    L094CA
  2816.     JMP    L0A1A8(PC)    ;*/undomodify BRA L0A1A8
  2817. L0A36E    MOVEQ    #-19,D0        ;not implemented error
  2818.     RTS
  2819. L0A372    ; Execute NEXT
  2820.     JSR    L0A09E(PC)    ;*/undomodify BSR L0A09E
  2821.     BLT    L0A402
  2822. L0A37A    MOVE.L    D4,D6
  2823.     CMPI.B    #$06,D1
  2824.     BEQ.S    L0A3D4
  2825.     MOVE.L    A2,-(A7)
  2826.     JSR    L04E4C(PC)    ;*/undomodify BSR L04E4C
  2827.     MOVEA.L    (A7),A2
  2828.     MOVEA.L    $0058(A6),A1    ;arith stack
  2829.     SUBA.W    #$000C,A1
  2830.     MOVE.L    $14(A6,A2.L),$02(A6,A1.L)
  2831.     BEQ.S    L0A3DE
  2832.     MOVE.W    $12(A6,A2.L),0(A6,A1.L)
  2833.     MOVE.W    0(A6,A2.L),$06(A6,A1.L)
  2834.     MOVE.L    $02(A6,A2.L),$08(A6,A1.L)
  2835.     JSR    RI_ADD(PC)    ;*/undomodify BSR RI_ADD
  2836.     BLT.S    L0A3D6
  2837.     MOVE.L    A1,BV_RIP(A6)    ;arith stack
  2838.     JSR    RI_DUP(PC)    ;*/undomodify BSR RI_DUP
  2839.     MOVEA.L    (A7),A2
  2840.     BSR.S    L0A404        ;test for end of function
  2841.     BRA.S    L0A3D6        ;error
  2842.     BRA.S    L0A3DA        ;end of loop
  2843. ; back to start of loop
  2844.     MOVEA.L    (A7)+,A2
  2845.     MOVE.W    0(A6,A0.L),0(A6,A2.L)
  2846.     MOVE.L    $02(A6,A0.L),$02(A6,A2.L)
  2847.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2848. L0A3D4    BRA.S    L0A3E4
  2849. L0A3D6    ADDQ.W    #4,A7
  2850.     RTS
  2851. ; end of loop
  2852. L0A3DA    ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  2853. L0A3DE    MOVEA.L    (A7)+,A2
  2854.     MOVEQ    #$01,D3
  2855.     BRA.S    L0A3E6
  2856. L0A3E4    MOVEQ    #0,D3
  2857. L0A3E6    BSR.S    L0A44C
  2858.     BNE.S    L0A402
  2859.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  2860.     BGT.S    L0A3F4
  2861.     SF    BV_INLIN(A6)    ;Processing inline clause
  2862. L0A3F4    CMPI.B    #$7F,BV_STMNT(A6) ;current stmnt on line
  2863.     BNE.S    L0A400
  2864.     SF    BV_INLIN(A6)    ;Processing in inline clause
  2865. L0A400    MOVEQ    #0,D0
  2866. L0A402    RTS
  2867. L0A404    ; test start and end of a loop
  2868.     MOVE.L    A2,-(A7)
  2869.     SUBQ.W    #6,A1
  2870.     MOVE.L    $0E(A6,A2.L),$02(A6,A1.L)
  2871.     MOVE.W    $0C(A6,A2.L),0(A6,A1.L)
  2872.     JSR    RI_SUB(PC)    ;*/undomodify BSR RI_SUB
  2873.     MOVEA.L    (A7)+,A2
  2874.     BLT.S    L0A44A
  2875.     MOVEQ    #$0D,D1
  2876.     ADD.W    0(A6,A1.L),D1
  2877.     CMP.W    $12(A6,A2.L),D1
  2878.     BGT.S    L0A42E
  2879.     LEA    $C(A2),A0
  2880.     BRA.S    L0A446
  2881. L0A42E    MOVEA.L    $0058(A6),A0    ;arith stack
  2882.     TST.B    $02(A6,A1.L)
  2883.     BLT.S    L0A440
  2884.     TST.B    $14(A6,A2.L)
  2885.     BLT.S    L0A446
  2886.     BRA.S    L0A448
  2887. L0A440    TST.B    $14(A6,A2.L)
  2888.     BLT.S    L0A448
  2889. L0A446    ADDQ.L    #2,(A7)
  2890. L0A448    ADDQ.L    #2,(A7)
  2891. L0A44A    RTS
  2892. L0A44C    ; position pointer to code after loop
  2893.     MOVE.B    BV_STMNT(A6),-(A7) ;current stmnt on line
  2894.     MOVE.L    BV_LINUM(A6),-(A7) ;current line #
  2895.     MOVE.L    A4,-(A7)
  2896.     MOVE.W    $06(A6,A2.L),D4
  2897.     JSR    L09FA2(PC)    ;*/undomodify BSR L09FA2
  2898.     BNE.S    L0A4AA
  2899.     JSR    L0A96A(PC)    ;*/undomodify BSR L0A96A
  2900.     BNE.S    L0A4AA
  2901.     MOVE.B    $0A(A6,A2.L),D4
  2902.     JSR    L0A00A(PC)    ;*/undomodify BSR L0A00A
  2903.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2904.     CMPI.W    #$8102,D1
  2905.     BEQ.S    L0A47E
  2906.     CMPI.W    #$8104,D1
  2907.     BNE.S    L0A4AA
  2908. L0A47E    ADDQ.W    #2,A4
  2909.     MOVEA.L    A4,A5
  2910.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  2911.     CMP.W    $02(A6,A4.L),D6
  2912.     BNE.S    L0A4AA
  2913.     TST.B    D3
  2914.     BEQ.S    L0A4A4
  2915.     MOVEA.L    A5,A4
  2916.     ADDA.W    $18(A6,A2.L),A4
  2917.     MOVE.L    D6,D4
  2918.     JSR    L09E88(PC)    ;*/undomodify BSR L09E88
  2919.     BLT.S    L0A4AC
  2920.     BEQ.S    L0A4A4
  2921.     MOVEQ    #0,D0
  2922.     BRA.S    L0A4AC
  2923. L0A4A4    ADDA.W    #$000A,A7
  2924.     RTS
  2925. L0A4AA    MOVEQ    #-$07,D0
  2926. L0A4AC    MOVEA.L    (A7)+,A4
  2927.     MOVE.L    (A7)+,BV_LINUM(A6) ;current line #
  2928.     MOVE.B    (A7)+,BV_STMNT(A6) ;current stmnt on line
  2929.     TST.L    D0
  2930.     RTS
  2931. L0A4BA    ; initialize all variables tables procs and funcs of
  2932.     ; proc or line
  2933.     MOVE.L    A4,-(A7)
  2934.     MOVE.B    BV_SING(A6),D6    ;Single line execution
  2935.                 ;ON ($FF) or OFF (0)
  2936.     BEQ.S    L0A4CC
  2937.     MOVEA.L    BV_TKBAS(A6),A4    ;token list
  2938.     MOVEQ    #0,D5
  2939.     BRA.S    L0A4EE
  2940. L0A4CA    SF    D6
  2941. L0A4CC    TST.B    BV_EDIT(A6)    ;Program has been
  2942.                 ;edited ($ff) or not (0)
  2943.     SF    BV_EDIT(A6)    ;Program has been
  2944.                 ;edited ($ff) or not (0)
  2945.     BEQ.S    L0A4EA
  2946.     MOVEA.L    BV_PFBAS(A6),A4    ;program file
  2947. L0A4DA    TST.B    D6
  2948.     BNE.S    L0A4CA
  2949.     MOVE.W    $04(A6,A4.L),D5
  2950.     ADDQ.W    #6,A4
  2951.     CMPA.L    BV_PFP(A6),A4    ;program running pointer
  2952.     BLT.S    L0A4EE
  2953. L0A4EA    MOVEA.L    (A7)+,A4
  2954.     RTS
  2955. L0A4EE    BSR.S    L0A56C        ;omit spaces
  2956.     CMPI.B    #$88,D0
  2957.     BEQ.S    L0A526
  2958.     CMPI.B    #$81,D0
  2959.     BNE.S    L0A55C
  2960.     ADDQ.W    #2,A4
  2961.     CMPI.B    #$14,D1
  2962.     BEQ.S    L0A4EE
  2963.     CMPI.B    #$02,D1
  2964.     BNE.S    L0A50E
  2965.     BSR.S    L0A56C
  2966.     BRA.S    L0A534
  2967. L0A50E    CMPI.B    #$04,D1
  2968.     BNE.S    L0A51E
  2969.     BSR.S    L0A56C
  2970.     CMPI.B    #$88,D0
  2971.     BNE.S    L0A55C
  2972.     BRA.S    L0A534
  2973. L0A51E    CMPI.B    #$1B,D1
  2974.     BNE.S    L0A53A
  2975.     BSR.S    L0A56C
  2976. L0A526    MOVE.L    A4,D4
  2977.     ADDQ.W    #4,A4
  2978.     BSR.S    L0A56C
  2979.     CMPI.W    #$8401,D1
  2980.     BNE.S    L0A55C
  2981.     MOVEA.L    D4,A4
  2982. L0A534    MOVEQ    #$02,D1
  2983. L0A536    BSR.S    L0A57E
  2984.     BRA.S    L0A55C
  2985. L0A53A    CMPI.B    #$07,D1
  2986.     BNE.S    L0A554
  2987.     BSR.S    L0A56C
  2988.     MOVE.W    D1,D4
  2989.     ADDQ.W    #2,A4
  2990.     BSR.S    L0A56C
  2991.     MOVEQ    #$04,D1
  2992.     CMPI.B    #$08,D4
  2993.     BEQ.S    L0A536
  2994.     MOVEQ    #$05,D1
  2995.     BRA.S    L0A536
  2996. L0A554    CMPI.B    #$19,D1
  2997.     BNE.S    L0A55C
  2998.     BSR.S    L0A5CE
  2999. L0A55C    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  3000.     BGE.S    L0A568
  3001.     ADDQ.W    #2,A4
  3002.     BRA    L0A4DA
  3003. L0A568    ADDQ.W    #2,A4
  3004.     BRA.S    L0A4EE
  3005. L0A56C    MOVE.W    0(A6,A4.L),D1
  3006.     MOVE.B    0(A6,A4.L),D0
  3007.     CMPI.B    #$80,D0
  3008.     BNE.S    L0A5CC
  3009.     JMP    L09072(PC)    ;*/undomodify BRA L09072
  3010. L0A57E    MOVEQ    #0,D0
  3011.     MOVE.W    2(A6,A4.L),D0
  3012.     LSL.L    #3,D0
  3013.     MOVEA.L    BV_NTBAS(A6),A0    ;name table
  3014.     ADDA.L    D0,A0
  3015.     MOVE.B    0(A6,A0.L),D0
  3016.     CMP.B    D0,D1
  3017.     BEQ.S    L0A5BC
  3018.     SUBQ.B    #2,D0
  3019.     BLT.S    L0A5BC
  3020.     BEQ.S    L0A5AC
  3021.     SUBQ.B    #1,D0
  3022.     BEQ.S    L0A5CC
  3023.     SUBQ.B    #2,D0
  3024.     BLE.S    L0A5A6
  3025.     SUBQ.B    #3,D0
  3026.     BLT.S    L0A5AC
  3027. L0A5A6    CMPI.B    #$04,D1
  3028.     BGE.S    L0A5BC
  3029. L0A5AC    MOVEA.L    A0,A2
  3030.     MOVEM.L    D1/A0,-(A7)
  3031.     JSR    L05784(PC)    ;*/undomodify BSR L05784
  3032.     MOVEM.L    (A7)+,D1/A0
  3033.     BNE.S    L0A5CC
  3034. L0A5BC    MOVE.B    D1,0(A6,A0.L)
  3035.     SUBQ.B    #4,D1
  3036.     BEQ.S    L0A5C8
  3037.     SUBQ.B    #1,D1
  3038.     BNE.S    L0A5CC
  3039. L0A5C8    MOVE.W    D5,$04(A6,A0.L)
  3040. L0A5CC    RTS
  3041. L0A5CE    ; initialize variable in name table
  3042.     MOVEQ    #0,D3
  3043.     SUBQ.W    #2,A4
  3044. L0A5D2    MOVE.W    #$8800,D4
  3045.     BSR.S    L0A5E0
  3046.     BNE.S    L0A60C
  3047.     MOVEQ    #$03,D1
  3048.     BSR.S    L0A57E
  3049.     BRA.S    L0A5D2
  3050. L0A5E0    ; look for first variable without parenthesis
  3051.     MOVEQ    #0,D3
  3052. L0A5E2    JSR    L09072(PC)    ;*/undomodify BSR L09072
  3053.     CMP.W    D4,D1
  3054.     BNE.S    L0A5F0
  3055.     TST.B    D3
  3056.     BEQ.S    L0A60C
  3057.     BRA.S    L0A5E2
  3058. L0A5F0    CMPI.W    #$8405,D1
  3059.     BNE.S    L0A5FA
  3060.     ADDQ.B    #1,D3
  3061.     BRA.S    L0A5E2
  3062. L0A5FA    CMPI.W    #$8406,D1
  3063.     BNE.S    L0A604
  3064.     SUBQ.B    #1,D3
  3065.     BRA.S    L0A5E2
  3066. L0A604    JSR    L09686(PC)    ;*/undomodify BSR L09686
  3067.     BNE.S    L0A5E2
  3068.     MOVEQ    #$01,D1
  3069. L0A60C    RTS
  3070. L0A60E    ; point to next instruction in line
  3071.     JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  3072.     BGE.S    L0A640
  3073.     TST.B    BV_SING(A6)    ;Single line execution
  3074.                 ;ON ($FF) or OFF (0)
  3075.     BNE.S    L0A63E
  3076.     ADDQ.W    #2,A4
  3077.     CMPA.L    BV_PFP(A6),A4    ;program running pointer
  3078.     BLT.S    L0A626
  3079.     JMP    L0A994(PC)    ;*/undomodify BRA L0A994
  3080. L0A626    MOVE.W    0(A6,A4.L),D0
  3081.     ADD.W    D0,BV_LENGTH(A6)    ;current length
  3082.     MOVE.W    $04(A6,A4.L),BV_LINUM(A6) ;current line #
  3083.     MOVEQ    #$01,D0
  3084.     MOVE.B    D0,BV_STMNT(A6)    ;current stmnt on line
  3085.     ADDQ.W    #6,A4
  3086.     MOVEQ    #0,D1
  3087. L0A63E    RTS
  3088. L0A640    ADDQ.W    #2,A4
  3089.     ADDQ.B    #1,BV_STMNT(A6)    ;current stmnt on line
  3090.     MOVEQ    #0,D0
  3091.     RTS
  3092. L0A64A    ; point to according value of select
  3093.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3094.     CMPI.W    #$8117,D1
  3095.     BEQ.S    L0A6CE
  3096.     BSR.S    L0A68C
  3097.     CMPI.W    #$810B,0(A6,A4.L)
  3098.     BEQ.S    L0A672
  3099.     BSR.S    L0A6D6
  3100.     MOVE.W    0(A6,A1.L),D0
  3101.     BEQ.S    L0A6CA
  3102.     ADDI.W    #$18,D0
  3103.     SUB.W    -6(A6,A1.L),D0
  3104.     BLE.S    L0A6CA
  3105.     BRA.S    L0A6A6
  3106. L0A672    BSR.S    L0A6D6
  3107.     TST.B    $02(A6,A1.L)
  3108.     BGT.S    L0A6A6
  3109.     ADDQ.W    #2,A4
  3110.     ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  3111.     BSR.S    L0A68C
  3112.     BSR.S    L0A6D6
  3113.     TST.B    $02(A6,A1.L)
  3114.     BLT.S    L0A6A6
  3115.     BRA.S    L0A6CA
  3116. L0A68C    MOVEA.L    A4,A0
  3117.     SUBA.L    BV_VVBAS(A6),A2    ;variable values
  3118.     MOVE.L    A2,-(A7)
  3119.     JSR    L05A7E(PC)    ;*/undomodify BSR L05A7E
  3120.     MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  3121.     ADDA.L    (A7)+,A2
  3122.     MOVEA.L    A0,A4
  3123.     BEQ.S    L0A6D4
  3124.     ADDQ.W    #4,A7
  3125.     RTS
  3126. L0A6A6    ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  3127. L0A6AA    MOVE.W    0(A6,A4.L),D0
  3128.     CMPI.W    #$8404,D0
  3129.     BNE.S    L0A6B8
  3130.     ADDQ.W    #2,A4
  3131.     BRA.S    L0A64A
  3132. L0A6B8    CMPI.W    #$840A,D0
  3133.     BEQ.S    L0A6D2
  3134.     CMPI.W    #$8402,D0
  3135.     BEQ.S    L0A6D2
  3136.     JSR    L09072(PC)    ;*/undomodify BSR L09072
  3137.     BRA.S    L0A6AA
  3138. L0A6CA    ADDQ.L    #6,BV_RIP(A6)    ;arith stack
  3139. L0A6CE    MOVEQ    #0,D0
  3140.     RTS
  3141. L0A6D2    MOVEQ    #-$01,D0
  3142. L0A6D4    RTS
  3143. L0A6D6    SUBQ.W    #6,A1
  3144.     MOVE.L    $02(A6,A2.L),$02(A6,A1.L)
  3145.     MOVE.W    0(A6,A2.L),0(A6,A1.L)
  3146.     JSR    RI_SUB(PC)    ;*/undomodify BSR RI_SUB
  3147.     BEQ.S    L0A6EC
  3148.     ADDQ.W    #4,A7
  3149. L0A6EC    RTS
  3150. L0A6EE    ; execute BASIC instruction
  3151.     MOVEA.L    $B0(A6),A4
  3152.     MOVEA.L    $B4(A6),A2
  3153. L0A6F6    SF    $B8(A6)
  3154.     MOVE.L    A4,$00B0(A6)
  3155.     MOVE.L    A2,$00B4(A6)
  3156.     MOVE.L    $04(A6,A2.L),D4
  3157.     MOVEA.L    A4,A0
  3158.     MOVE.L    BV_NTP(A6),D0    ;name table running pointer
  3159.     SUB.L    BV_NTBAS(A6),D0    ;name table
  3160.     MOVE.L    D0,-(A7)
  3161.     JSR    L0614A(PC)    ;*/undomodify BSR L0614A
  3162.     BNE.S    L0A724
  3163.     MOVE.W    0(A6,A0.L),D1
  3164.     JSR    L09686(PC)    ;*/undomodify BSR L09686
  3165.     BEQ.S    L0A732
  3166.     MOVEQ    #-$0F,D0
  3167. L0A724    MOVE.L    BV_NTBAS(A6),D1    ;name table
  3168.     ADD.L    (A7)+,D1
  3169.     MOVE.L    D1,BV_NTP(A6)    ;name table running pointer
  3170.     TST.L    D0
  3171.     RTS
  3172. L0A732    MOVE.L    A5,D0
  3173.     SUB.L    BV_NTBAS(A6),D0    ;name table
  3174.     MOVE.L    D0,-(A7)
  3175.     MOVEA.L    A0,A4
  3176.     MOVEA.L    BV_NTBAS(A6),A3    ;name table
  3177.     ADDA.L    $0004(A7),A3
  3178.     MOVEA.L    D4,A2
  3179.     MOVEA.L    BV_RIP(A6),A1    ;arith stack
  3180.     SUBA.L    BV_RIBAS(A6),A1    ;arith stack running ptr
  3181.     SUBA.L    BV_TKBAS(A6),A4    ;token list
  3182.     MOVEM.L    D5-D7/A1/A4,-(A7)
  3183.     MOVE.L    BV_LINUM(A6),-(A7) ;current line #
  3184.     MOVE.B    BV_STMNT(A6),-(A7) ;current stmnt on line
  3185.     MOVE.L    BV_INLIN(A6),-(A7) ;Processing in inline clause
  3186.     JSR    (A2)        ;call Machinecode procedure
  3187.     MOVE.L    D0,D2        ;*** Procedure return ***
  3188.     MOVE.L    (A7)+,BV_INLIN(A6) ;Processing inline clause
  3189.     MOVE.B    (A7)+,BV_STMNT(A6) ;current stmnt on line
  3190.     MOVE.L    (A7)+,BV_LINUM(A6) ;current line #
  3191.     MOVEM.L    (A7)+,D5-D7/A1/A4
  3192.     ADDA.L    BV_TKBAS(A6),A4    ;token list
  3193.     ADDA.L    BV_RIBAS(A6),A1    ;arith stack running ptr
  3194.     MOVE.L    A1,BV_RIP(A6)    ;arith stack
  3195.     MOVEA.L    BV_NTBAS(A6),A5    ;name table
  3196.     MOVEA.L    A5,A3
  3197.     ADDA.L    (A7)+,A5
  3198.     ADDA.L    (A7)+,A3
  3199.     JSR    STO_VARValue(PC)    ;*/undomodify BSR STO_VARValue
  3200.     MOVE.L    D2,D0
  3201.     TST.B    $B8(A6)        ;undo rt stack then redo
  3202.                 ;procedure
  3203.     BNE    L097E0
  3204.     RTS
  3205. L0A79C    MOVE.B    #$7F,BV_STMNT(A6) ;current stmnt on line
  3206.     MOVEQ    #0,D4
  3207.     MOVE.W    BV_INDEX(A6),D4    ;Name tab row of last lp
  3208.     JSR    L0A0AA(PC)    ;*/undomodify BSR L0A0AA
  3209.     BGE    L0A37A
  3210.     RTS
  3211. L0A7B2    ; execute DATA and REMark lines
  3212.     MOVEQ    #0,D0
  3213.     RTS
  3214. L0A7B6    ; execute a conditional repeat
  3215.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3216.     CMPI.B    #$88,D0
  3217.     BNE.S    L0A7F0
  3218.     MOVEQ    #0,D4
  3219.     MOVE.W    2(A6,A4.L),D4
  3220.     ADDQ.W    #4,A4
  3221.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  3222.     BLT.S    L0A7D8
  3223.     MOVE.B    #1,BV_INLIN(A6)    ;Processing inline clause
  3224.     MOVE.W    D4,BV_INDEX(A6)    ;Name tab row of last lp
  3225. L0A7D8    JSR    L09F96(PC)    ;*/undomodify BSR L09F96
  3226.     MOVE.B    0(A6,A2.L),D2
  3227.     MOVEQ    #$06,D1
  3228.     SUBQ.B    #2,D2
  3229.     BEQ.S    L0A7F4
  3230.     SUBQ.B    #4,D2
  3231.     BEQ.S    L0A81C
  3232.     MOVEQ    #$1A,D1
  3233.     SUBQ.B    #1,D2
  3234.     BEQ.S    L0A7F4
  3235. L0A7F0    MOVEQ    #-$0C,D0
  3236.     RTS
  3237. L0A7F4    ; initialize conditions of REPeat loop
  3238.     MOVE.L    A2,-(A7)
  3239.     MOVE.L    4(A6,A2.L),D2
  3240.     BLT.S    L0A806
  3241.     MOVEA.L    BV_VVBAS(A6),A0    ;variable values
  3242.     ADDA.L    D2,A0
  3243.     JSR    L04FE8(PC)    ;*/undomodify BSR L04FE8
  3244. L0A806    MOVEQ    #$0C,D1
  3245.     JSR    L04DF6(PC)    ;*/undomodify BSR L04DF6
  3246.     SUBA.L    BV_VVBAS(A6),A0    ;variable values
  3247.     MOVEA.L    (A7)+,A2
  3248.     MOVE.L    A0,$04(A6,A2.L)
  3249.     MOVE.B    #$06,0(A6,A2.L)
  3250. L0A81C    JMP    L0A2FE(PC)    ;*/undomodify BRA L0A2FE
  3251. L0A820    ; execute RESTore
  3252.     CLR.W    BV_DALNO(A6)    ;Current DATA line #
  3253.     MOVEA.L    A4,A0
  3254.     JSR    L05A82(PC)    ;*/undomodify BSR L05A82
  3255.     MOVEA.L    A0,A4
  3256.     BLT.S    L0A848
  3257.     BGT.S    L0A83A
  3258.     ADDQ.L    #2,BV_RIP(A6)    ;arith stack
  3259.     MOVE.W    0(A6,A1.L),BV_DALNO(A6) ;Current DATA line #
  3260. L0A83A    MOVE.B    #$01,BV_DASTM(A6) ;Current DATA statement #
  3261.     MOVE.B    #$01,BV_DAITM(A6) ;Next DATA item to read
  3262.     MOVEQ    #0,D0
  3263. L0A848    RTS
  3264. L0A84A    ; execute conditions fo SELect
  3265.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3266.     CMPI.W    #$8115,D1
  3267.     BNE.S    L0A85A
  3268.     ADDQ.W    #2,A4
  3269.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3270. L0A85A    MOVEQ    #0,D4
  3271.     MOVE.W    $02(A6,A4.L),D4
  3272.     ADDQ.W    #4,A4
  3273.     JSR    L09F80(PC)    ;*/undomodify BSR L09F80
  3274.     SUBQ.B    #2,D2
  3275.     BNE.S    L0A8A0
  3276.     TST.L    D0
  3277.     BLT.S    L0A89C
  3278.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  3279.     BLT.S    L0A88C
  3280.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  3281.     BNE.S    L0A87E
  3282.     ST    BV_INLIN(A6)    ;Processing inline clause
  3283. L0A87E    JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3284.     CMPI.W    #$8401,D1
  3285.     BNE.S    L0A88C
  3286.     ADDQ.W    #2,A4
  3287.     BRA.S    L0A892
  3288. L0A88C    JSR    L09D72(PC)    ;*/undomodify BSR L09D72
  3289.     BNE.S    L0A898
  3290. L0A892    JSR    L0A64A(PC)    ;*/undomodify BSR L0A64A
  3291.     BLT.S    L0A88C
  3292. L0A898    MOVEQ    #0,D0
  3293.     RTS
  3294. L0A89C    MOVEQ    #-17,D0        ;Error in expression
  3295.     RTS
  3296. L0A8A0    MOVEQ    #-12,D0        ;Bad name
  3297.     RTS
  3298. L0A8A4    ; supervisor of direct or programm lines
  3299.     MOVEA.L    BV_PFBAS(A6),A4    ;program file
  3300. L0A8A8    SF    BV_INLIN(A6)    ;Processing inline clause
  3301.     TST.B    BV_SING(A6)    ;Single line execution
  3302.                 ;ON ($FF) or OFF (0)
  3303.     BNE.S    L0A8B8
  3304. L0A8B2    BSR    L0A966
  3305.     BNE.S    L0A8F8
  3306. L0A8B8    MOVEQ    #1,D0
  3307.     JSR    L04E32(PC)    ;*/undomodify BSR L04E32
  3308.                 ;allocate memory
  3309.     MOVEQ    #0,D0
  3310. ; --------------------------------------------------------------
  3311. ;*/beginoverlay
  3312.     ifd    NoTas
  3313. L0A8C0:
  3314.     BSR    L0A56C        ;*/modify JSR $A56C(PC)
  3315.     CMPI.B    #$81,D0
  3316.     BNE.S    L0A8D0
  3317.     BSR    L0A190        ;*/modify JSR $A190(PC)
  3318.     BRA.S    o0A8EA        ;*/modify BRA.S $A8EA
  3319. L0A8D0:
  3320.     SUBI.B    #$88,D0        ;*/modify CMPI.B #$88,D0
  3321.     BNE.S    L0A8DC
  3322.     BSR    L0A33C        ;*/modify JSR $A33C(PC)
  3323.     BRA.S    o0A8EA        ;*/modify BRA.S $A8EA
  3324. L0A8DC:
  3325.     ADDQ.B    #$04,D0        ;*/modify CMPI.B #$84,D0
  3326.     BNE.S    o0A8E8        ;*/modify BNE.S $A8E8
  3327.     BSR    L0ABF0        ;*/modify JSR $ABF0(PC)
  3328.     BRA.S    o0A8EA        ;*/modify BRA.S $A8EA
  3329. ; test for errors and Break
  3330. o0A8E8:
  3331.     MOVEQ    #-19,D0        ;Not implemented error
  3332. o0A8EA:
  3333.     TST.L    D0
  3334.     BNE    L09BA8
  3335.     BSET    #7,BV_BRK(A6)    ;*/mend TAS BV_BRK(A6)
  3336.                 ;There has been a
  3337.                 ;break (0) or not ($80)
  3338.     BEQ    L09B90
  3339. L0A8F8:
  3340.     BSET    #7,BV_CONT(A6)    ;*/mend TAS BV_CONT(A6)
  3341.                 ;continue ($80)
  3342.                 ;or stop (0) processing
  3343.     BEQ.S    L0A938        ;*/modify BEQ.L L0A9BA
  3344.     TST.B    BV_SING(A6)    ;Single line execution
  3345.                 ;ON ($FF) or OFF (0)
  3346.     BNE.S    L0A90C
  3347.     CMPA.L    BV_PFBAS(A6),A4    ;program file
  3348.     BLE.S    L0A8A4
  3349. L0A90C:
  3350.     BSR    L09B32        ;*/modify JSR $9B32(PC)
  3351.     BGE.S    L0A95C
  3352.     TST.B    BV_INLIN(A6)    ;Processing inline clause?
  3353.     BEQ.S    L0A94E
  3354.     BLT.S    L0A924
  3355.     BSR    L0A79C        ;*/modify JSR $A79C(PC)
  3356.     TST.B    BV_INLIN(A6)    ;Processing inline clause
  3357.     BNE.S    o0A8EA        ;*/modify BNE.S L0A8EA
  3358. ;
  3359.     endc
  3360. ;
  3361.     ifnd    NoTas
  3362. L0A8C0:
  3363.     JSR    L0A56C(PC)
  3364.     CMPI.B    #$81,D0
  3365.     BNE.S    L0A8D0
  3366.     JSR    L0A190(PC)
  3367.     BRA.S    o0A8EA
  3368. L0A8D0:
  3369.     CMPI.B    #$88,D0
  3370.     BNE.S    L0A8DC
  3371.     JSR    L0A33C(PC)
  3372.     BRA.S    o0A8EA
  3373. L0A8DC:
  3374.     CMPI.B    #$84,D0
  3375.     BNE.S    L0A8E8
  3376.     JSR    L0ABF0(PC)
  3377.     BRA.S    o0A8EA
  3378. L0A8E8:
  3379.     MOVEQ    #$-13,D0
  3380. o0A8EA:
  3381.     TST.L    D0
  3382.     BNE    L09BA8
  3383.     TAS    $008F(A6)
  3384.     BEQ    L09B90
  3385. L0A8F8:
  3386.     TAS    BV_CONT(A6)
  3387.     BEQ    L0A9BA
  3388.     TST.B    $6F(A6)
  3389.     BNE.S    L0A90C
  3390.     CMPA.L    $10(A6),A4
  3391.     BLE.S    L0A8A4
  3392. L0A90C:
  3393.     JSR    L09B32(PC)
  3394.     BGE.S    L0A95C
  3395.     TST.B    $6E(A6)
  3396.     BEQ.S    L0A94E
  3397.     BLT.S    L0A924
  3398.     JSR    L0A79C(PC)
  3399.     TST.B    $6E(A6)
  3400.     BNE.S    o0A8EA
  3401. ;
  3402.     endc
  3403. ;*/endoverlay
  3404. ; --------------------------------------------------------------
  3405. ; WHEN ERROR ?
  3406. L0A924:
  3407.     TST.B    $C0(A6)
  3408.     BEQ.S    L0A93C
  3409.     TST.B    $BF(A6)
  3410.     BEQ.S    L0A94E
  3411.     JSR    BAS_CONTinue(PC)    ;*/undomodify BSR BAS_CONTinue
  3412.     ST    BV_CONT(A6)    ;continue ($80) or stop (0)
  3413. L0A938:
  3414.     JMP    L0A9BA(PC)    ;*/undomodify BRA L0A9BA
  3415. L0A93C:
  3416.     MOVE.W    BV_LINUM(A6),D4    ;current line #
  3417.     MOVEQ    #-1,D3
  3418.     JSR    L0ACC2(PC)    ;*/undomodify BSR L0ACC2
  3419.     BNE.S    L0A94E
  3420.     JSR    L09AEE(PC)    ;*/undomodify BSR L09AEE
  3421.     BRA.S    L0A90C
  3422. L0A94E    ; test for return after line end
  3423.     TST.B    BV_SING(A6)    ;Single line execution
  3424.                 ;ON ($FF) or OFF (0)
  3425.     ADDQ.W    #2,A4
  3426.     BEQ    L0A8B2
  3427.     BSR.S    L0A998
  3428.     BRA.S    L0A990
  3429. L0A95C    ADDQ.W    #2,A4
  3430.     ADDQ.B    #1,BV_STMNT(A6)    ;current stmnt on line
  3431.     BRA    L0A8B8
  3432. L0A966    ; point to first instruction in line
  3433.     SF    BV_INLIN(A6)    ;Processing inline clause
  3434. L0A96A    CLR.W    BV_LINUM(A6)    ;current line #
  3435.     TST.B    BV_SING(A6)    ;Single line execution
  3436.                 ;ON ($FF) or OFF (0)
  3437.     BNE.S    L0A98A
  3438.     CMPA.L    BV_PFP(A6),A4    ;program running pointer
  3439.     BGE.S    L0A994
  3440.     MOVE.W    0(A6,A4.L),D0
  3441.     ADD.W    D0,BV_LENGTH(A6)    ;current length
  3442.     MOVE.W    4(A6,A4.L),BV_LINUM(A6) ;current line #
  3443.     ADDQ.W    #6,A4
  3444. L0A98A    MOVE.B    #1,BV_STMNT(A6)    ;current stmnt on line
  3445. L0A990    MOVEQ    #0,D0
  3446.     RTS
  3447. L0A994    ; set flags after end of prog
  3448.     SF    BV_CONT(A6)    ;continue ($80) or stop (0)
  3449. L0A998    MOVE.W    #$FFFF,BV_NXLIN(A6) ;line # to start after
  3450.                 ;to start after
  3451.     MOVE.W    #4,BV_STOPN(A6)    ;Which stop number set
  3452.     RTS
  3453. ; execute system commands
  3454. ; Labels relativ to L0A9BA
  3455. ; NOTE: ALL following commands have been rewritten
  3456. ; by Tony Tebby - if you use TOOLKIT II you can easily
  3457. ; omit all the code that is following
  3458. L0A9A6    DC.W    L0A9F2-L0A9BA    ;CLEAR
  3459.     DC.W    L0AADC-L0A9BA    ;NEW
  3460.     DC.W    L0ABCA-L0A9BA    ;STOP
  3461.     DC.W    L0AA5E-L0A9BA    ;RUN
  3462.     DC.W    L0AADC-L0A9BA    ;LRUN
  3463.     DC.W    L0AADC-L0A9BA    ;LOAD
  3464.     DC.W    L0ABDC-L0A9BA    ;MRUN
  3465.     DC.W    L0ABDC-L0A9BA    ;MERGE
  3466.     DC.W    L0ABA6-L0A9BA    ;CONTINUE-RETRY
  3467.     DC.W    L0A9C6-L0A9BA    ;ERROR-RETURN
  3468. L0A9BA    MOVE.W    BV_STOPN(A6),D1    ;Which stop number set
  3469.     MOVE.W    L0A9A6(PC,D1.W),D1
  3470.     JMP    L0A9BA(PC,D1.W)
  3471. L0A9C6    ; restore system and error return
  3472.     JSR    L09BA8(PC)    ;*/undomodify BSR L09BA8
  3473.     MOVEA.L    BV_RTP(A6),A0    ;return table running ptr
  3474.     SF    BV_AUTO(A6)    ;Whether AUTO/EDIT
  3475.                 ;is on ($FF) or off (0)
  3476. L0A9D2    CMPA.L    BV_RTBAS(A6),A0    ;return table
  3477.     BLE.S    L0A9FC
  3478.     MOVE.B    -$08(A6,A0.L),D0
  3479.     BEQ.S    L0A9EE
  3480.     MOVE.L    -$18(A6,A0.L),D0
  3481.     ADD.L    BV_NTBAS(A6),D0    ;name table
  3482.     MOVE.L    D0,BV_NTP(A6)    ;name table running pointer
  3483.     SUBA.W    #$0010,A0
  3484. L0A9EE    SUBQ.W    #8,A0
  3485.     BRA.S    L0A9D2
  3486. L0A9F2    ; system command clear
  3487.     TST.B    BV_UNRVL(A6)    ;Need to unravel
  3488.                 ;($ff) or not (0)
  3489.     BEQ.S    L0A9FC
  3490.     JSR    L097E0(PC)    ;*/undomodify BSR L097E0
  3491. L0A9FC    BSR    L0AA88
  3492.     JSR    L056C6(PC)    ;*/undomodify BSR L056C6
  3493.     MOVEA.L    BV_NTBAS(A6),A0    ;name table
  3494. L0AA08    MOVE.B    0(A6,A0.L),D0
  3495.     SUBQ.B    #1,D0
  3496.     BEQ.S    L0AA4A
  3497.     SUBQ.B    #3,D0
  3498.     BLT.S    L0AA1C
  3499.     SUBQ.B    #2,D0
  3500.     BLT.S    L0AA52
  3501.     SUBQ.B    #2,D0
  3502.     BGE.S    L0AA52
  3503. L0AA1C    MOVE.W    2(A6,A0.L),D0
  3504.     BLT.S    L0AA4A
  3505.     BSR    L0AACC
  3506.     MOVE.B    -1(A6,A1.L),D0
  3507.     MOVEQ    #1,D1
  3508.     SUBI.B    #$25,D0
  3509.     BLT.S    L0AA38
  3510.     BGT.S    L0AA36
  3511.     ADDQ.W    #1,D1
  3512. L0AA36    ADDQ.W    #1,D1
  3513. L0AA38    MOVE.B    D1,1(A6,A0.L)
  3514.     MOVE.B    D7,0(A6,A0.L)
  3515.     MOVE.L    #$FFFFFFFF,4(A6,A0.L)
  3516.     BRA.S    L0AA52
  3517. L0AA4A    MOVE.L    D7,0(A6,A0.L)
  3518.     MOVE.L    D7,4(A6,A0.L)
  3519. L0AA52    ADDQ.W    #8,A0
  3520.     CMPA.L    BV_NTP(A6),A0    ;name table running pointer
  3521.     BLT.S    L0AA08
  3522.     ST    BV_EDIT(A6)    ;Program has been
  3523.                 ;edited ($ff) or not (0)
  3524. L0AA5E    ; execute RUN
  3525.     TST.B    BV_UNRVL(A6)    ;Need to unravel
  3526.                 ;($ff) or not (0)
  3527.     BEQ.S    L0AA80
  3528.     MOVE.W    BV_NXLIN(A6),$B4(A6) ;line # to start after
  3529.     MOVE.W    BV_STOPN(A6),$B6(A6) ;Which stop number set
  3530.     JSR    L097E0(PC)    ;*/undomodify BSR L097E0
  3531.     MOVE.W    $B4(A6),BV_NXLIN(A6)
  3532.     MOVE.W    $B6(A6),BV_STOPN(A6)
  3533. L0AA80    JSR    L0A4BA(PC)    ;*/undomodify BSR L0A4BA
  3534.     BRA    L0ABE6
  3535. L0AA88    ; clear stacks and storage places
  3536.     MOVEQ    #0,D7
  3537.     MOVE.L    D7,BV_DALNO(A6)    ;Current DATA line #
  3538.     MOVE.B    #$01,BV_DAITM(A6) ;Next DATA item to read
  3539.     MOVE.L    BV_VVBAS(A6),$2C(A6) ;variable values
  3540.     MOVE.L    #$FFFFFFFF,$CA(A6) ;
  3541.     MOVE.W    D7,$C8(A6)    ;
  3542.     MOVE.L    BV_RTBAS(A6),BV_RTP(A6) ;return table
  3543.     MOVEQ    #$58,D0
  3544. L0AAAE    MOVE.L    BV_RIBAS(A6),0(A6,D0.W) ;arith stack running ptr
  3545.     SUBQ.W    #4,D0
  3546.     CMPI.B    #$48,D0
  3547.     BGE.S    L0AAAE
  3548.     SF    $0090(A6)    ;Need to unravel
  3549.                 ;($ff) or not (0)
  3550.     MOVE.L    D7,BV_VVFREE(A6)    ;First free space in vvtable
  3551.     JSR    L04F9E(PC)    ;*/undomodify BSR L04F9E
  3552.     JMP    L04F96(PC)    ;*/undomodify BRA L04F96
  3553. L0AACC    ; point to end of name list
  3554.     MOVEA.L    BV_NLBAS(A6),A1    ;name list
  3555.     ADDA.W    D0,A1
  3556.     MOVEQ    #$01,D0
  3557.     ADD.B    0(A6,A1.L),D0
  3558.     ADDA.W    D0,A1
  3559.     RTS
  3560. L0AADC:
  3561.     MOVEA.L    BV_CHP(A6),A3    ;channel name running ptr
  3562.     MOVEA.L    BV_CHBAS(A6),A2    ;channel name
  3563.     ADDA.W    #$78,A2
  3564.     MOVE.L    A2,BV_CHP(A6)    ;channel name running ptr
  3565. L0AAEC    CMPA.L    A3,A2
  3566.     BGE.S    L0AB02
  3567.     MOVE.L    0(A6,A2.L),D0
  3568.     BLT.S    L0AAFC
  3569.     MOVEA.L    D0,A0
  3570.     MOVEQ    #2,D0        ;IO.CLOSE
  3571.     TRAP    #2
  3572. L0AAFC    ADDA.W    #$0028,A2
  3573.     BRA.S    L0AAEC
  3574. L0AB02    MOVEQ    #$10,D0        ;MT.DMODE sets or reads the
  3575.                 ;display mode
  3576.     MOVEQ    #-1,D1        ;read mode
  3577.     MOVEQ    #-1,D2        ;read display
  3578.     TRAP    #1
  3579.     MOVEQ    #$10,D0        ;MT.DMODE sets this mode
  3580.     TRAP    #1
  3581.     MOVE.L    BV_LNBAS(A6),BV_LNP(A6) ;line # table
  3582.     CLR.W    BV_LSBAS(A6)    ;Bottom line in window
  3583.     BSR    L0AA88
  3584.     MOVE.L    BV_PFBAS(A6),BV_PFP(A6) ;program file
  3585.     MOVEQ    #0,D0
  3586.     MOVEQ    #0,D5
  3587.     MOVEA.L    BV_NTBAS(A6),A0    ;name table
  3588.     MOVEQ    #8,D1
  3589. L0AB2C    CMPA.L    BV_NTP(A6),A0    ;name table running pointer
  3590.     BEQ.S    L0AB84
  3591.     CMP.B    0(A6,A0.L),D1
  3592.     BGT.S    L0AB42
  3593.     TST.B    D5
  3594.     BNE.S    L0AB50
  3595.     MOVE.W    2(A6,A0.L),D0
  3596.     BRA.S    L0AB80
  3597. L0AB42    TST.B    D5
  3598.     BNE.S    L0AB80
  3599.     MOVEA.L    A0,A2
  3600.     BSR.S    L0AACC
  3601.     MOVEA.L    A1,A3
  3602.     ST    D5
  3603.     BRA.S    L0AB80
  3604. L0AB50    MOVE.L    0(A6,A0.L),0(A6,A2.L)
  3605.     MOVE.L    $04(A6,A0.L),$04(A6,A2.L)
  3606.     MOVE.W    $02(A6,A2.L),D0
  3607.     BSR    L0AACC
  3608.     SUBA.W    D0,A1
  3609.     MOVE.L    A3,D2
  3610.     SUB.L    BV_NLBAS(A6),D2    ;name list
  3611.     MOVE.W    D2,$02(A6,A2.L)
  3612.     ADDQ.W    #8,A2
  3613. L0AB72    MOVE.B    0(A6,A1.L),0(A6,A3.L)
  3614.     ADDQ.W    #1,A1
  3615.     ADDQ.W    #1,A3
  3616.     SUBQ.W    #1,D0
  3617.     BGT.S    L0AB72
  3618. L0AB80    ADDQ.W    #8,A0
  3619.     BRA.S    L0AB2C
  3620. L0AB84    TST.B    D5
  3621.     BEQ.S    L0AB90
  3622.     MOVE.L    A2,BV_NTP(A6)    ;name table running pointer
  3623.     MOVE.L    A3,BV_NLP(A6)    ;name list running pointer
  3624. L0AB90    JSR    L04F9A(PC)    ;*/undomodify BSR L04F9A
  3625.     JSR    L04F8E(PC)    ;*/undomodify BSR L04F8E
  3626.     JSR    L04F92(PC)    ;*/undomodify BSR L04F92
  3627.     JSR    L04F8A(PC)    ;*/undomodify BSR L04F8A
  3628.     JSR    L056C6(PC)    ;*/undomodify BSR L056C6
  3629.     BRA.S    L0ABC4
  3630. L0ABA6    ; execute RETRY or CONTINUE
  3631.     MOVE.W    BV_CNLNO(A6),BV_NXLIN(A6) ;Line to CONTINUE from
  3632.     MOVE.B    BV_CNSTM(A6),$8A(A6) ;Statement to CONTINUE from
  3633.     MOVE.W    #$FFFF,BV_CNLNO(A6) ;Line to CONTINUE from
  3634.     MOVE.B    BV_CNINL(A6),BV_INLIN(A6) ;CONTINUE Inline loop flg
  3635.     MOVE.W    BV_CNIND(A6),BV_INDEX(A6) ;Inline loop indx
  3636. L0ABC4    SF    BV_COMLN(A6)    ;Command line saved ($ff)
  3637.                 ;or not (0)
  3638.     BRA.S    L0ABEC
  3639. L0ABCA    ; execute STOP
  3640.     TST.B    $C0(A6)
  3641.     SF    $C0(A6)
  3642.     BNE.S    L0ABE6
  3643.     MOVEQ    #0,D0
  3644.     JSR    L09B5E(PC)    ;*/undomodify BSR L09B5E
  3645.     BRA.S    L0ABEC
  3646. L0ABDC    ; execute MRUN or MERGE
  3647.     TST.B    BV_UNRVL(A6)    ;Need to unravel
  3648.                 ;($ff) or not (0)
  3649.     BEQ.S    L0ABE6
  3650.     JSR    L097E0(PC)    ;*/undomodify BSR L097E0
  3651. L0ABE6    MOVE.B    BV_SING(A6),BV_COMLN(A6) ;Single line execution
  3652.                 ;ON ($FF) or OFF (0)
  3653. L0ABEC    MOVEQ    #0,D0
  3654.     RTS
  3655. L0ABF0    ; handling of lines starting with =
  3656.     CMPI.W    #$8401,D1
  3657.     BNE.S    L0ABFC
  3658.     ADDQ.W    #2,A4
  3659.     JMP    L09CFE(PC)    ;*/undomodify BRA L09CFE
  3660.                 ;search end of SELect
  3661. L0ABFC    MOVEQ    #0,D0
  3662.     RTS
  3663. L0AC00    ; execute WHEN
  3664.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3665.     CMPI.W    #$810E,D1
  3666.     BNE.S    L0AC32
  3667.     MOVE.W    BV_LINUM(A6),$00BC(A6) ;current line #
  3668.     MOVE.B    BV_STMNT(A6),$00BE(A6) ;current stmnt on line
  3669.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  3670.     SEQ    $00BF(A6)
  3671.     BEQ.S    L0AC28
  3672.     MOVEQ    #$06,D2
  3673.     JMP    L098A8(PC)    ;*/undomodify BRA L098A8
  3674. L0AC26    ADDQ.W    #2,A4
  3675. L0AC28    JSR    L09B32(PC)    ;*/undomodify BSR L09B32
  3676.     BGE.S    L0AC26
  3677. L0AC2E    MOVEQ    #0,D0
  3678.     RTS
  3679. L0AC32    ; WHENvar
  3680.     MOVE.W    2(A6,A4.L),D4
  3681.     ADDQ.W    #4,A4
  3682.     JSR    L0A56C(PC)    ;*/undomodify BSR L0A56C
  3683.     CMPI.B    #$85,D0
  3684.     BEQ.S    L0AC54
  3685. L0AC42:
  3686.     MOVEQ    #$01,D3
  3687.     JSR    L0ACC2(PC)    ;*/undomodify BSR.S L0ACC2
  3688.                 ;*/undomodify nop
  3689.     BNE.S    L0AC2E
  3690.     ST    0(A6,A2.L)
  3691.     SUBQ.W    #1,$C8(A6)
  3692.     BRA.S    L0AC42
  3693. L0AC54:
  3694.     MOVEQ    #$01,D3
  3695.     JSR    L0ACC2(PC)    ;*/undomodify BSR.S L0ACC2
  3696.                 ;*/undomodify nop
  3697. L0AC5A:
  3698.     BNE.S    L0AC6C
  3699.     MOVE.W    BV_LINUM(A6),D0    ;current line #
  3700.     CMP.W    $02(A6,A2.L),D0
  3701.     BEQ.S    L0AC76
  3702.     JSR    L0ACDA(PC)    ;*/undomodify BSR.S L0ACDA
  3703.                 ;*/undomodify nop
  3704.     BRA.S    L0AC5A
  3705. L0AC6C:
  3706.     MOVEQ    #0,D3
  3707.     JSR    L0ACC2(PC)    ;*/undomodify BSR.S L0ACC2
  3708.                 ;*/undomodify nop
  3709.     ADDQ.W    #1,$00C8(A6)
  3710. L0AC76:
  3711.     MOVE.W    D4,0(A6,A2.L)
  3712.     MOVE.W    BV_LINUM(A6),$02(A6,A2.L) ;current line #
  3713.     MOVE.B    BV_STMNT(A6),$04(A6,A2.L) ;current statement
  3714.     MOVE.W    BV_LINUM(A6),$06(A6,A2.L) ;current line #
  3715.     MOVE.B    #$7F,$05(A6,A2.L)
  3716.     CLR.L    $0A(A6,A2.L)
  3717.     ST    $08(A6,A2.L)
  3718.     MOVE.L    A2,-(A7)
  3719.     JSR    L09852(PC)    ;*/undomodify BSR L09852
  3720.     MOVEA.L    (A7)+,A2
  3721.     SEQ    $0E(A6,A2.L)
  3722.     BEQ.S    L0AC28
  3723.     MOVEQ    #$06,D2
  3724.     MOVE.L    A2,-(A7)
  3725.     JSR    L098A8(PC)    ;*/undomodify BSR L098A8
  3726.     MOVE.L    (A7)+,D2
  3727.     MOVE.W    BV_LINUM(A6),$06(A6,A2.L) ;current line #
  3728.     MOVE.B    BV_STMNT(A6),$05(A6,A2.L) ;current stmnt on line
  3729.     BRA    L0AC2E
  3730. L0ACC2    MOVE.W    $00C8(A6),D2
  3731.     BEQ.S    L0AD06
  3732.     BSR.S    L0AD10
  3733. L0ACCA    MOVE.W    0(A6,A2.L),D0
  3734.     BLT.S    L0ACEC
  3735.     TST.B    D3
  3736.     BLT.S    L0ACF2
  3737.     BEQ.S    L0ACDE
  3738.     CMP.W    D0,D4
  3739.     BEQ.S    L0ACFE
  3740. L0ACDA    SUBQ.W    #1,D2
  3741.     BEQ.S    L0AD02
  3742. L0ACDE    ADDA.W    #$0010,A2
  3743.     SUBI.L    #$00000010,D1
  3744.     BGE.S    L0ACCA
  3745.     BRA.S    L0AD26
  3746. L0ACEC    TST.B    D3
  3747.     BNE.S    L0ACDE
  3748.     RTS
  3749. L0ACF2    CMP.W    $06(A6,A2.L),D4
  3750.     BNE.S    L0ACDA
  3751.     TST.W    $08(A6,A2.L)
  3752.     BLT.S    L0ACDA
  3753. L0ACFE    MOVEQ    #0,D0
  3754.     RTS
  3755. L0AD02    MOVEQ    #-$01,D0
  3756.     RTS
  3757. L0AD06    TST.B    D3
  3758.     BNE.S    L0AD02
  3759.     TST.L    $CA(A6)        ;
  3760.     BLT.S    L0AD26
  3761. L0AD10    MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  3762.     ADDA.L    $CA(A6),A2    ;
  3763.     MOVE.L    0(A6,A2.L),D1
  3764.     SUBI.L    #$14,D1
  3765.     ADDQ.W    #4,A2
  3766.     RTS
  3767. L0AD26    MOVE.L    $CA(A6),D1    ;
  3768.     BGE.S    L0AD32
  3769.     MOVEQ    #0,D1
  3770.     MOVEQ    #0,D0
  3771.     BRA.S    L0AD3C
  3772. L0AD32    MOVEA.L    BV_VVBAS(A6),A2    ;variable values
  3773.     ADDA.L    D1,A2
  3774.     MOVE.L    0(A6,A2.L),D0
  3775. L0AD3C    ADDI.L    #$140,D1
  3776.     MOVE.L    A2,-(A7)
  3777.     MOVE.L    D0,-(A7)
  3778.     JSR    L04DF6(PC)    ;*/undomodify BSR L04DF6
  3779.     MOVE.L    (A7)+,D0
  3780.     MOVEA.L    (A7)+,A2
  3781.     MOVE.L    D1,0(A6,A0.L)
  3782.     MOVE.L    A0,-(A7)
  3783.     SUB.L    D0,D1
  3784. L0AD56    ADDQ.W    #4,A2
  3785.     ADDQ.W    #4,A0
  3786.     SUBQ.W    #4,D0
  3787.     BLE.S    L0AD66
  3788.     MOVE.L    0(A6,A2.L),0(A6,A0.L)
  3789.     BRA.S    L0AD56
  3790. L0AD66    MOVE.L    A0,-(A7)
  3791. L0AD68    ST    0(A6,A0.L)
  3792.     ADDA.W    #$10,A0
  3793.     SUBI.L    #$10,D1
  3794.     BGT.S    L0AD68
  3795.     MOVE.L    $CA(A6),D1
  3796.     BLT.S    L0AD8C
  3797.     MOVEA.L    BV_VVBAS(A6),A0    ;variable values
  3798.     ADDA.L    D1,A0
  3799.     MOVE.L    0(A6,A0.L),D1
  3800.     JSR    L04FE8(PC)    ;*/undomodify BSR L04FE8
  3801. L0AD8C    MOVEA.L    (A7)+,A2
  3802.     MOVE.L    (A7)+,D1
  3803.     SUB.L    BV_VVBAS(A6),D1    ;variable values
  3804.     MOVE.L    D1,$CA(A6)
  3805.     RTS
  3806. ; --------------------------------------------------------------
  3807. ;*/endfile
  3808.